Files
apiautotest/utils/models.py

163 lines
3.7 KiB
Python
Raw 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.
# -*- 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)
CASE_DEPENDENCE = ("case_dependence", 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
case_dependence: Union[None, Dict] = 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"
@unique
class AssertMethod(Enum):
"""
断言类型
注意这里的类型与assert_type.py中的方法名相同不要随意改动
"""
equals = "=="
less_than = "lt"
less_than_or_equals = "le"
greater_than = "gt"
greater_than_or_equals = "ge"
not_equals = "not_eq"
string_equals = "str_eq"
length_equals = "len_eq"
length_greater_than = "len_gt"
length_greater_than_or_equals = 'len_ge'
length_less_than = "len_lt"
length_less_than_or_equals = 'len_le'
contains = "contains"
contained_by = 'contained_by'
startswith = 'startswith'
endswith = 'endswith'