一、unittest自动化测试结构
二、加载测试用例,生成测试报告
1、导入相关模块:unittest等
import unittest
import time
import HTMLTestRunner
import os
import sys
from config import readconfig
import datetime
2、加载目标测试用例:测试用例文件夹case,测试用例文件名称以Test开头
# 当前脚本所在文件真实路径
cur_path = os.path.dirname(os.path.realpath(__file__))
def add_case(case_name="case", rule="Test*.py"):
"""
加载所有的测试用例
"""
case_path = os.path.join(cur_path, case_name) # 用例文件夹
# 定义discover方法的参数
# discover()方法会自动根据测试目录匹配查找测试用例文件(Test*.py),并将查找到的测试用例组装到测试套件中
discover = unittest.defaultTestLoader.discover(case_path, # 要测试的模块名或测试用例目录
pattern=rule, # 测试用例文件名的匹配规则
top_level_dir=None) # 测试模块的顶层目录,如果没有,默认None
print('discover:', discover)
return discover
3、运行测试用例,然后将测试报告写入目标报告文件夹下
def run_case(all_case, report_name="report"):
"""
执行所有的用例, 并把结果写入HTML测试报告
:param all_case:
:param report_name:
:return:
"""
report_path = os.path.join(cur_path, report_name) # 用例文件夹
# 如果不存在report文件夹,就自动创建一个
if not os.path.exists(report_path):
os.mkdir(report_path)
report_abspath = os.path.join(report_path, now+"result.html")
fp = open(report_abspath, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, # 指定测试报告文件
title=u'Lis Interface AutoTest Report', # 测试报告标题
description=u'Test Case Execution:') # 测试报告副标题
# 执行测试
runner.run(all_case)
fp.close()
4、执行
def main():
print('测试执行时间:{}'.format(datetime.datetime.now()))
all_case = add_case() # 加载用例
# 生成测试报告的路径
run_case(all_case) # 执行用例
if __name__ == "__main__":
main()
三、执行结果
F 代表fail , . 代表 pass ,E 代表 error