代码改变世界

HTMLTestRunner生成测试报告注意事项

2018-04-20 16:41  ~Nirvana!。  阅读(3646)  评论(2编辑  收藏  举报
 1 __author__ = 'XXX'
 2 #coding=utf-8
 3 
 4 import requests
 5 import unittest
 6 import json
 7 import HTMLTestRunner
 8 
 9 class GetRequestTest(unittest.TestCase):
10 
11     def setUp(self):
12         self.base_url="http://www.kuaidi100.com/"
13 
14     def tearDown(self):
15         pass
16 
17     def test_login(self):
18         self.data={"type":"yuantong","postid":"200528056708"}
19 
20         r=requests.post(self.base_url+"/query",self.data)
21         dicts=json.loads(r.text)
22         print(dicts)
23         code=r.status_code
24         print(code)
25 
26         self.assertEqual(code,200)
27         self.assertEqual(dicts['status'],'200')
28 
29 if __name__=="__main__":
30     suite=unittest.TestSuite()
31     suite.addTest(GetRequestTest("test_login"))
32     fp=open('E:\\testresult.html','wb')
33     #测试报告的标题与描述
34     runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='测试报告的标题:',description='测试报告的描述:')
35     runner.run(suite)
36     fp.close()

以上是一段简单的python+unittest接口测试的测试代码;

这里重点说下运行生成report过程中遇到的问题,记录下来:

问题1:import HTMLTestRunner.py 报异常:

HTMLTestRunner.py是Python标准库unittest单元测试框架的一个扩展,它生成HTML测试报告,需要下载此文件,选中目标另存为保存到路径:\Python36\Lib目录下(Windows安装环境)

下载路径:http://tungwaiyip.info/software/HTMLTestRunner.html

问题2:python3中运行以上脚本报ImportError: No module named 'StringIO',因为HTMLTestRunner.py是基于python2开发的,在解决完问题1后,需要通过编辑器修改HTMLTestRunner.py文件如下内容:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode('latin-1')修改成uo = e

第775行,将ue = e.decode('latin-1')修改成ue = e

第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

问题3:IDE里运行python命令执行该段脚本,报错提示TypeError: 'Module' object is not callable”,原因是以内htmltestrunner模块的时候不明确,有两种使用方式,总结如下:

A。直接引入 from HTMLTestRunner import HTMLTestRunner,调用的时候runner = HTMLTestRunner(stream =......)

B。间接引用,import HTMLTestRunner,调用的时候需要runner = HTMLTestRunner.HTMLTestRunner(stream =......)

问题4:在ide里可以运行并生成测试报告,但是在Pycharm里不行,原因是Ctrl+Shift+F10运行不会生成脚本,Alt+Shift+F10运行生成脚本
 
后续继续更新……