用python写一个生成html测试报告的类,支持创建testcase,在testcase中写测试步骤,测试步骤包含时间,操作,结果等信息,失败的步骤结果显示红色,如果testcase中有一个测试步骤失败,tescase的结果也是失败
时间: 2023-05-29 18:02:05 浏览: 92
以下是基于Python编写的一个简单的生成HTML测试报告的类,支持创建testcase和测试步骤,测试步骤包含时间、操作、结果等信息。如果测试步骤失败,则将结果显示为红色,如果一个测试用例中有至少一个测试步骤失败,则将整个testcase的结果标记为失败。
```python
class TestReport(object):
def __init__(self, report_name):
self.report_name = report_name
self.testcases=[]
self.result=""
def create_testcase(self, testcase_name):
self.testcases.append({"name":testcase_name, "steps":[], "result":"PASS"})
def add_step(self, testcase_name, step_name, step_result):
for testcase in self.testcases:
if testcase["name"] == testcase_name:
if "FAIL" in step_result:
testcase["result"] = "FAIL"
testcase["steps"].append({"name":step_name, "result":step_result})
def generate_report(self):
with open(self.report_name, "w") as f:
f.write("<html><body>")
f.write("<h1>Test Report</h1>")
for testcase in self.testcases:
f.write("<h2>Testcase: {}</h2>".format(testcase["name"]))
if testcase["result"]=="FAIL":
f.write("<h3 style=color:red>Result: FAIL</h3>")
else:
f.write("<h3>Result: PASS</h3>")
f.write("<table border=1>")
f.write("<tr><th>Step Name</th><th>Result</th></tr>")
for step in testcase["steps"]:
if "FAIL" in step["result"]:
f.write("<tr style=color:red><td>{}</td><td>{}</td></tr>".format(step["name"], step["result"]))
else:
f.write("<tr><td>{}</td><td>{}</td></tr>".format(step["name"], step["result"]))
f.write("</table>")
f.write("</body></html>")
```
在该类中,首先定义了一个测试报告类TestReport,该类包含创建testcase和测试步骤、记录测试结果以及生成测试报告等方法。
create_testcase方法用于创建testcase,同时初始化测试步骤和测试结果为PASS。
add_step方法用于记录测试步骤,如果测试步骤中有FAIL关键字,则该测试步骤被视为失败,整个testcase的结果也将被标记为失败。
generate_report方法用于生成HTML测试报告,其中包含每个testcase的名称、结果以及测试步骤详细信息。如果某个测试步骤失败,则将其结果标记为红色,以便更好地显示测试结果。
示例代码:
```python
report = TestReport("test_report.html")
report.create_testcase("Testcase 1")
report.add_step("Testcase 1","Step 1", "PASS")
report.add_step("Testcase 1","Step 2", "FAIL: expected value does not match actual value")
report.generate_report()
```
运行上面的代码,将生成一个名为test_report.html的测试报告,其中包含一个名为Testcase 1的测试用例,测试用例的结果为FAIL,因为存在一个测试步骤的结果为FAIL。测试报告展示如下:

阅读全文
相关推荐


















