Files
apiautotest/config/case_template.txt
T

45 lines
1.6 KiB
Plaintext

# -*- coding: utf-8 -*-
# @Time : ${now}
# 标准库导入
# 第三方库导入
import pytest
import allure
from loguru import logger
# 本地应用/模块导入
from config.settings import db_info
from config.global_vars import GLOBAL_VARS
from case_utils.assert_handle import assert_response, assert_sql
from case_utils.request_data_handle import RequestPreDataHandle, RequestHandle, after_request_extract
from case_utils.allure_handle import allure_title
# 用例数据
cases = ${case_data}
@allure.epic("${allure_epic}")
@allure.feature("${allure_feature}")
class ${class_title}Auto:
@allure.story("${allure_story}")
@pytest.mark.auto
@pytest.mark.parametrize("case", cases, ids=["{}".format(case["title"]) for case in cases])
def ${func_title}_auto(self, case):
logger.info("\n-----------------------------START-开始执行用例-----------------------------\n")
logger.debug(f"当前执行的用例数据:{case}")
# 添加用例标题作为allure中显示的用例标题
allure_title(case.get("title", ""))
# 处理请求前的用例数据
case_data = RequestPreDataHandle(case).request_data_handle()
# 发送请求
response = RequestHandle(case_data).http_request()
# 进行响应断言
assert_response(response, case_data["assert_response"])
# 进行数据库断言
assert_sql(db_info[GLOBAL_VARS["env_key"]], case_data["assert_sql"])
# 断言成功后进行参数提取
after_request_extract(response, case_data.get("extract", None))
logger.info("\n-----------------------------END-用例执行结束-----------------------------\n")