Project

General

Profile

Files » test_book_manager_system.py

UserName LastName, 07/05/2025 05:16 PM

 
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 == "添加成功"
(414-414/437)