|
import allure
|
|
import pytest
|
|
|
|
from utils.util import Utils
|
|
from 第二周.src.book_manager_system import BookManagement
|
|
|
|
|
|
# 取yaml文件的字段
|
|
def get_book_info():
|
|
result = Utils.get_yaml_data("../../datas/book_info.yaml")
|
|
datas = result.get("add").get("data")
|
|
names = result.get("add").get("ids")
|
|
return datas, names
|
|
|
|
|
|
# 定义测试类,不可以包含构造函数
|
|
@allure.feature("测试图书管理系统")
|
|
class TestBookManager:
|
|
|
|
def setup_class(self):
|
|
# 实例化类,在测试类执行之前调用一次
|
|
self.sm = BookManagement()
|
|
|
|
def teardown_class(self):
|
|
print("用例执行完成")
|
|
|
|
@pytest.mark.P0
|
|
@allure.story("添加图书")
|
|
@allure.title("添加图书冒烟用例")
|
|
def test_add_book(self):
|
|
# 测试添加图书
|
|
# 接收被调接口的结果
|
|
with allure.step("调用添加图书方法"):
|
|
result = self.sm.add_book("b001", "yuwen", 20, "textbook1")
|
|
# 断言
|
|
with allure.step("断言添加结果"):
|
|
assert result == "添加成功"
|
|
|
|
@pytest.mark.P2
|
|
@allure.story("添加图书")
|
|
@allure.title("添加图书异常场景-图书编号已存在")
|
|
def test_add_book_rebid(self):
|
|
# 接收被调接口的结果
|
|
with allure.step("调用添加图书方法"):
|
|
result = self.sm.add_book("b001", "math", 19, "textbook2")
|
|
# 断言
|
|
with allure.step("断言添加结果"):
|
|
assert result == "添加失败"
|
|
|
|
@pytest.mark.P0
|
|
@allure.story("通过编号修改图书信息")
|
|
def test_modify_book(self):
|
|
# 测试通过编号修改图书信息
|
|
result = self.sm.modify_book_by_id("b001")
|
|
assert result == "修改成功"
|
|
|
|
@pytest.mark.P0
|
|
@allure.story("通过ID删除图书信息")
|
|
def test_delete_book_by_id(self):
|
|
result = self.sm.delete_book_by_id("b001")
|
|
assert result == "删除成功"
|
|
|
|
@pytest.mark.P0
|
|
@allure.story("通过图书名称删除图书信息")
|
|
def test_delete_book_by_name(self):
|
|
result = self.sm.delete_book_by_name("yuwen")
|
|
assert result == "删除成功"
|
|
|
|
@pytest.mark.P0
|
|
@allure.story("通过编号查询图书信息")
|
|
def test_query_book_by_id(self):
|
|
result = self.sm.query_book_by_id("b001")
|
|
assert result == "查询成功"
|
|
|
|
@pytest.mark.P0
|
|
@allure.story("通过名字查询图书信息")
|
|
def test_query_book_by_name(self):
|
|
result = self.sm.query_book_by_name("yuwen")
|
|
assert result == "查询成功"
|
|
|
|
@pytest.mark.P1
|
|
@pytest.mark.parametrize(
|
|
"bid, name, price, summary",
|
|
get_book_info()[0],
|
|
ids=get_book_info()[1]
|
|
)
|
|
@allure.story("添加图书")
|
|
@allure.title("参数化添加图书{bid}, {name}")
|
|
def test_add_book_by_params(self, bid, name, price, summary):
|
|
# 参数化添加图书
|
|
result = self.sm.add_book(bid, name, price, summary)
|
|
# 断言
|
|
assert result == "添加成功"
|