一、unittest自动化测试结构
二、加载测试用例,生成测试报告
1、导入相关模块:unittest等
import unittest import time import HTMLTestRunner import os import sys from config import readconfig import datetime2、加载目标测试用例:测试用例文件夹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 discover3、运行测试用例,然后将测试报告写入目标报告文件夹下
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
