@desc: 测试方法 """ import os import shutil import pytest from tools import logger from api.base_requests import BaseRequest from tools.data_process import DataProcess from tools.read_file import ReadFile report = ReadFile.read_config('$.file_path.report') logfile = ReadFile.read_config('$.file_path.log') # 读取excel数据对象 cases = ReadFile.read_testcase() class TestApi: @classmethod def run(cls): if os.path.exists('../report'): shutil.rmtree(path='../report') logger.add(logfile, enqueue=True, encoding='utf-8') logger.info('开始测试...') pytest.main(args=[f'--alluredir={report}/data']) os.system(f'allure generate {report}/data -o {report}/html --clean') logger.success('报告已生成') @pytest.mark.parametrize('case', cases) def test_main(self, case, get_db):
@pytest.fixture(scope="session") def data_clearing(): """数据清洗""" DataClearing.server_init() # 1. 备份数据库 DataClearing.backup_mysql() yield # 2. 恢复数据库 DataClearing.recovery_mysql() DataClearing.close_client() # 若不需要数据清洗功能,请把get_db()入参拿掉 @pytest.fixture(scope="session") def get_db(data_clearing): """关于其作用域请移步查看官方文档""" try: db = DB() yield db finally: db.close() @pytest.fixture(params=ReadFile.read_testcase()) def cases(request): """用例数据,测试方法参数入参该方法名 cases即可,实现同样的参数化 目前来看相较于@pytest.mark.parametrize 更简洁。 """ return request.param