1 Star 0 Fork 200

无冕之王/apiAutoTest

forked from 7y/apiAutoTest 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
test_main.py 2.13 KB
一键复制 编辑 原始数据 按行查看 历史
7y 提交于 2022-02-28 00:37 . refactor:重构代码
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)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/xionggao/apiAutoTest.git
git@gitee.com:xionggao/apiAutoTest.git
xionggao
apiAutoTest
apiAutoTest
master

搜索帮助