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 =......)