结合python+unittest+HTMLTestRunner自动生成测试报告:
开发构思:
1、在测试方法相同时,测试多个不同参数的测试情况;(unittest自动根据参数条数生成多个的方法)
2、可统计测试情况;
3、测试情况数据过滤;
4、日志记录失败的测试方法;
测试报告预览:
resultHtml.py文件,自动测试指定目录下的文件
#coding=utf-8
from lib.HTMLTestRunner import HTMLTestRunner
import time
import unittest
import os
#from dataExcel import dataExcel
import time
#定义测试用例的目录为当前目录
test_dir=os.path.dirname(os.path.realpath(__file__))
test_dir1 = test_dir +'\\resultHtmlFile'
discover = unittest.defaultTestLoader.discover(test_dir,pattern = 'testExcelType*.py')
if __name__=="__main__":
#按照一定的格式获取当前的时间
now = time.strftime("%Y-%m-%d %H-%M-%S")
#定义报告存放路径
filename =test_dir1 + '/' + now + 'test_result.html'
fp = open(filename,"wb")
#以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
#定义测试报告
runner = HTMLTestRunner(stream = fp,
title = u"接口测试报告",
description = u"测试用例执行情况:")
#运行测试
runner.run(discover)
fp.close() #关闭报告文件
testExcelType.py文件,执行测试方法
import unittest
import time
import requests
from data.dataExcelType import dataExcelType
import os
# 导入自定义的logging配置
from logs.log import Logger
import time
import json
from common.login import Login
class TestDemo(unittest.TestCase):
cur_path=os.path.dirname(os.path.realpath(__file__))
xlsxName = r'\inteData.xlsx'
dataExcelType = dataExcelType(cur_path,cur_path_json,xlsxName,0)
#为批量生成测试用例提供数据
@parameterized.expand(dataExcelType)
def testcase(self,a):
u'''测试接口'''
logs = Logger().get_logger()
logs.info("开始执行用例:-------------- %s ,%s" % (a['params'],a['result']))
time.sleep(0.5)
#要测试的操作代码
#....
if __name__ == "__main__":
unittest.main(verbosity=2)