网站建设松江,百度一下你就知道官网网页,做网站后端的全部步骤,网络营销和网络销售的区别批量执行完测试用例后#xff0c;为了更好的展示测试报告#xff0c;最好是生成HTML格式的。本文使用第三方HTMLTestRunner插件生成测试报告。
一、导入HTMLTestRunner模块 这个模块下载不能通过pip安装#xff0c;只能下载后手动导入#xff0c;下载地址是#xff1a;ht… 批量执行完测试用例后为了更好的展示测试报告最好是生成HTML格式的。本文使用第三方HTMLTestRunner插件生成测试报告。
一、导入HTMLTestRunner模块 这个模块下载不能通过pip安装只能下载后手动导入下载地址是http://tungwaiyip.info/software/HTMLTestRunner.html。 Download下的HTMLTestRunner.py文件就是我们需要下载的包下载后将其手动放到python安装文件的lib目录下。
二、生成测试报告 这里使用前一篇文章中的加载测试用例相关代码29-unittest批量执行案例-CSDN博客。 HTMLTestRunner主要有三个参数
stream测试报告写入文件的存储位置。title测试报告的标题。description测试报告的描述。
import unittest
import os
import HTMLTestRunner# 1.指定测试用例所在的目录
case_path os.path.join(os.getcwd(), case)# 2.指定测试报告存放的位置
report_path os.path.join(os.getcwd(), report)# 3.通过discover加载测试用例
def get_all_case():discover unittest.defaultTestLoader.discover(case_path, patterntest*.py)return discoverif __name__ __main__:# 4.html测试报告文件的路径report_abspath os.path.join(report_path, result.html)# 5.执行测试用例并生成测试报告fp open(report_abspath, wb)runner HTMLTestRunner.HTMLTestRunner(streamfp, title我的自动化测试报告, descriptionV1.0)runner.run(get_all_case())fp.close()
三、No module named StringIO报错
1原因分析 执行上述代码后会报错No module named StringIO。 原因我用的是Python 3.X版本而下载的HTMLTestRunner适用于Python2.X。
2解决办法 修改HTMLTestRunner.py文件源码使得HTMLTestRunner可以在Python 3.X版本中正常使用。
第94行将import StringIO修改成import io。第539行将self.outputBuffer StringIO.StringIO()修改成self.outputBuffer io.StringIO()第631行将print sys.stderr, \nTime Elapsed: %s % (self.stopTime-self.startTime)修改成print(sys.stderr, \nTime Elapsed: %s % (self.stopTime-self.startTime))第642行将if not rmap.has_key(cls): 修改成if not cls in rmap:第766行将uo o.decode(latin-1)修改成uo e第772行将ue e.decode(latin-1)修改成ue e 将HTMLTestRunner源码以上内容修改后重新运行脚本发现一切正常并在相应路径下生成了测试报告如图所示 四、测试报告详情 找到测试报告文件用浏览器打开点开View列中的Detail可以查看详细描述。 在测试报告中为了让测试用例带有中文描述可以在测试方法中添加注释比如在baidu.test_01.py脚本添加如下注释重新运行后查看测试报告。
import unittestclass Test(unittest.TestCase):def test01(self):测试用例test01账号XXX密码YYYprint(执行测试用例test_01.test01)def test02(self):print(执行测试用例test_01.test02)def test03(self):测试用例test03关键词ZZZprint(执行测试用例test_01.test03)if __name__ __main__:unittest.main()