目录
一个完整的功能测试用例包括:测试case编号,测试case描述,测试前提条件,测试步骤,测试action, 期望结果,实际结果,测试结果,测试状态,测试remark等。
通过python对测试用例相关的属性进行类型封装,以用于自动化测试。
测试结果类
class TestResultEnum(Enum):
Pass: str = "Pass"
Fail: str = "Fail"
Warning: str = "Warning"
NotRun: str = "NotRun"
Pending: str = "Pending"
NA: str = ""
@staticmethod
def get_enum_by_value(input_str: str) -> "TestResultEnum":
for member in TestResultEnum:
if member.value.lower() == input_str.lower():
return member
raise ValueError(f"无效的枚举值: {input_str}")
测试状态类
class TestStatusEnum(Enum):
RUN: str = "RUN"
NA: str = "NA"
@staticmethod
def get_enum_by_value(input_str) -> "TestStatusEnum":
for member in TestStatusEnum:
if member.value.lower() == input_str.lower():
return member
raise ValueError(f"无效的枚举值: {input_str}")
测试步骤类
@dataclass
class TestStep:
"""测试步骤类
Attributes:
action (str): 测试执行动作
expected_result (str): 测试期望结果
actual_result (str): 测试实际结果
final_result (TestResultEnum): 测试结果【Pass】 or 【Fail】 or 【NotRun】
Examples:
>>> tset_step = TestStep(action="Action1", expected_result="e1", actual_result="a1", final_result=TestResultEnum.NA)
"""
action: str = ""
expected_result: str = ""
actual_result: str = ""
final_result: TestResultEnum = TestResultEnum.NA
测试case类
@dataclass
class TestCase:
"""测试用例类
Attributes:
testcase_description (str): 测试case描述
testcase_precondition (str): 测试前提条件
testcase_steps_list (list[TestStep]): 测试步骤集合
status (TestStatusEnum): 测试执行状态【RUN】 or 【NA】
channel (str): 测试通道
remark (str): 测试备注
test_timestamp (str): 测试时间戳
Examples:
>>> test_case = TestCase(testcase_description="test_description", testcase_precondition="testcase_precondition", testcase_steps_list=[])
"""
testcase_description: str
testcase_precondition: str
testcase_steps_list: list["TestStep"] = field(default_factory=list)
status: TestStatusEnum = TestStatusEnum.RUN
channel: str = ""
type: str = ""
remark: str = ""
test_timestamp: str = ""
def __post_init__(self):
self.testcase_steps_list.insert(0, TestStep())
@property
def case_length(self) -> int:
return len(self.testcase_steps_list)
@property
def case_test_result(self) -> "TestResultEnum":
test_steps_results = [test_step.final_result.name.lower() for test_step in self.testcase_steps_list]
if test_steps_results.count("fail") == 0:
if test_steps_results.count("pass") >= 1:
test_result = TestResultEnum.Pass
elif test_steps_results.count("warning") >= 1:
test_result = TestResultEnum.Warning
else:
test_result = TestResultEnum.NotRun
else:
test_result = TestResultEnum.Fail
self.testcase_steps_list[0].final_result = test_result
return test_result
测试报告类(待更新)
@dataclass
class TestReport:
"""测试报告类
Attributes:
test_report_path (Path): 测试报告路径
test_sheet (str): 测试报告sheet页名
self.testcase_list (list[TestCase]): 测试用例集合
Examples:
>>> test_report = TestReport(test_report_path=Path(r"xxx"), test_sheet="DTC", testcase_list=[])
"""
test_report_path: Path
test_sheet: str
testcase_list: list[TestCase] = field(default_factory=list)