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测试报告,需要下载此文件,选中目标另存为保存到路径:Python36Lib目录下(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, ' Time Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, ' Time 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 =......)