Пример #1
0
@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):
Пример #2
0
@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