对框架的目录结构进行了调整以及部分细节进行了调整
This commit is contained in:
@@ -1,43 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : ${now}
|
||||
|
||||
# 标准库导入
|
||||
# 第三方库导入
|
||||
import pytest
|
||||
import allure
|
||||
from loguru import logger
|
||||
# 本地应用/模块导入
|
||||
from config.global_vars import GLOBAL_VARS
|
||||
from case_utils.assert_utils.assert_handle import assert_response, assert_sql
|
||||
from case_utils.requests_utils.request_data_handle import RequestPreDataHandle, RequestHandle, after_request_extract
|
||||
from case_utils.report_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["db_info"], expected=case_data["assert_sql"])
|
||||
# 断言成功后进行参数提取
|
||||
after_request_extract(response, case_data.get("extract", None))
|
||||
logger.info("\n-----------------------------END-用例执行结束-----------------------------\n")
|
||||
|
||||
@@ -1,137 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Version: Python 3.9
|
||||
# @Time : 2023/1/31 14:31
|
||||
# @Author : chenyinhua
|
||||
# @File : models.py
|
||||
# @Software: PyCharm
|
||||
# @Desc: 全局变量
|
||||
|
||||
# 标准库导入
|
||||
from enum import Enum, unique # python 3.x版本才能使用
|
||||
from typing import Text, Dict, Union, Any
|
||||
# 第三方库导入
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class CaseFileType(Enum):
|
||||
"""
|
||||
用例数据可存储文件的类型枚举
|
||||
"""
|
||||
YAML = 1
|
||||
EXCEL = 2
|
||||
ALL = 0
|
||||
|
||||
|
||||
class NotificationType(Enum):
|
||||
""" 自动化通知方式 """
|
||||
DEFAULT = 0
|
||||
DING_TALK = 1
|
||||
WECHAT = 2
|
||||
EMAIL = 3
|
||||
ALL = 4
|
||||
|
||||
|
||||
@unique # 枚举类装饰器,确保只有一个名称绑定到任何一个值。
|
||||
class AllureAttachmentType(Enum):
|
||||
"""
|
||||
allure 报告的文件类型枚举
|
||||
"""
|
||||
TEXT = "txt"
|
||||
CSV = "csv"
|
||||
TSV = "tsv"
|
||||
URI_LIST = "uri"
|
||||
|
||||
HTML = "html"
|
||||
XML = "xml"
|
||||
JSON = "json"
|
||||
YAML = "yaml"
|
||||
PCAP = "pcap"
|
||||
|
||||
PNG = "png"
|
||||
JPG = "jpg"
|
||||
SVG = "svg"
|
||||
GIF = "gif"
|
||||
BMP = "bmp"
|
||||
TIFF = "tiff"
|
||||
|
||||
MP4 = "mp4"
|
||||
OGG = "ogg"
|
||||
WEBM = "webm"
|
||||
|
||||
PDF = "pdf"
|
||||
|
||||
|
||||
class Severity(str, Enum):
|
||||
"""
|
||||
测试用例优先级
|
||||
"""
|
||||
BLOCKER = 'BLOCKER' # blocker:阻塞缺陷(中断缺陷,客户端程序无响应,无法执行下一步操作)
|
||||
CRITICAL = 'CRITICAL' # critical:严重缺陷(临界缺陷,功能点缺失)
|
||||
NORMAL = 'NORMAL' # normal: 一般缺陷(边界情况,格式错误)
|
||||
MINOR = 'MINOR' # minor:次要缺陷(界面错误与ui需求不符)
|
||||
TRIVIAL = 'TRIVIAL' # trivial: 轻微缺陷(必须项无提示,或者提示不规范)
|
||||
|
||||
|
||||
class TestCaseEnum(Enum):
|
||||
"""
|
||||
测试用例中字段
|
||||
"""
|
||||
ID = ("id", True)
|
||||
TITLE = ("title", True)
|
||||
URL = ("url", True)
|
||||
SEVERITY = ("severity", False)
|
||||
METHOD = ("method", True)
|
||||
HEADERS = ("headers", True)
|
||||
COOKIES = ("cookies", False)
|
||||
RUN = ("run", False)
|
||||
REQUEST_TYPE = ("request_type", True)
|
||||
PAYLOAD = ("payload", False)
|
||||
FILES = ("files", False)
|
||||
EXTRACT = ("extract", False)
|
||||
ASSERT_RESPONSE = ("assert_response", True)
|
||||
ASSERT_SQL = ("assert_sql", False)
|
||||
|
||||
|
||||
class TestCase(BaseModel):
|
||||
"""
|
||||
测试用例各数据格式要求
|
||||
"""
|
||||
id: Union[None, Text]
|
||||
title: Text
|
||||
severity: Text
|
||||
url: Text
|
||||
method: Text
|
||||
headers: Union[None, Dict, Text] = {}
|
||||
cookies: Union[None, Dict, Text]
|
||||
request_type: Text
|
||||
run: Union[None, bool, Text] = None
|
||||
payload: Any = None
|
||||
files: Any = None
|
||||
extract: Union[None, Dict, Text] = None
|
||||
assert_response: Union[None, Dict, Text]
|
||||
assert_sql: Union[None, Dict, Text] = None
|
||||
|
||||
|
||||
class Method(Enum):
|
||||
"""
|
||||
请求方式
|
||||
"""
|
||||
GET = "GET"
|
||||
POST = "POST"
|
||||
PUT = "PUT"
|
||||
PATCH = "PATCH"
|
||||
DELETE = "DELETE"
|
||||
HEAD = "HEAD"
|
||||
OPTION = "OPTION"
|
||||
|
||||
|
||||
class RequestType(Enum):
|
||||
"""
|
||||
request请求发送,请求参数的数据类型
|
||||
"""
|
||||
JSON = "JSON"
|
||||
PARAMS = "PARAMS"
|
||||
DATA = "DATA"
|
||||
FILE = 'FILE'
|
||||
EXPORT = "EXPORT"
|
||||
NONE = "NONE"
|
||||
@@ -47,7 +47,7 @@ if not os.path.exists(MANUAL_CASE_DIR):
|
||||
os.mkdir(MANUAL_CASE_DIR)
|
||||
|
||||
# 测试用例方法模板路径
|
||||
CASE_TEMPLATE_DIR = os.path.join(CONF_DIR, "case_template.txt")
|
||||
CASE_TEMPLATE_DIR = os.path.join(CONF_DIR, "../utils/case_data_utils/case_template.txt")
|
||||
|
||||
# 自动生成测试用例模块
|
||||
AUTO_CASE_DIR = os.path.join(CASE_DIR, "test_auto_case")
|
||||
|
||||
Reference in New Issue
Block a user