apiAutoTest_zy7y/test_main.py

79 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pytest
from core import DataBaseMysql
from core import DataProcess
from core import ReadFileClass
from core import ReportStyle
from core import HttpRequest
rfc = ReadFileClass("config.yaml")
http_client = HttpRequest()
data_process = DataProcess(rfc)
@pytest.fixture(scope="session")
def data_clearing():
"""数据清理"""
from core import DataClear
with DataClear(rfc) as dc:
dc.backup()
yield
dc.recovery()
@pytest.fixture(scope="session")
def get_db():
"""数据库对象"""
with DataBaseMysql(rfc) as db:
yield db
@pytest.fixture(params=rfc.get_case())
def case(request):
"""用例数据,测试方法参数入参该方法名 cases即可实现同样的参数化
目前来看相较于@pytest.mark.parametrize 更简洁。
"""
return request.param
@pytest.fixture(scope="session")
def clear_db(data_clearing):
"""同时使用数据清洗 和 数据库操作功能"""
with DataBaseMysql(rfc) as db:
yield db
# def test_start(case, get_db): # 只使用数据库操作
# def test_start(case, clear_db): # 使用数据库操作 及 数据清洗
def test_start(case): # 不使用数据库操作
"""
测试启动方法, 当需要使用 数据清洗和 数据库操作命令时将 get_db 换成 clear_db
如只需要使用 数据库操作 则添加get_db 参数, 如一个都不需要则不添加
:param case: 用例
:return:
"""
# 前置处理
title, skip, header, path, method, data_type, file, data, extra, sql, expect = case
ReportStyle.title(title)
data_process.handle_case(path, header, skip, data, file)
# 发送请求
http_client.send_request(
data_type,
method,
data_process.path,
data_process.headers,
data_process.body,
data_process.files,
)
# 后置处理
DataProcess.handle_extra(extra, http_client.response.json())
data_process.sql = sql
# data_process.handle_sql(get_db) # 使用数据库
# data_process.handle_sql(clear_db) # 使用数据清洗及 数据库
# 断言
DataProcess.assert_result(http_client.response.json(), expect)