Python3 使用HTMLTestRunner.py 報錯ImportError: No module named 'StringIO'處理方法
HTMLTestRunner.py文件是基於Python2的語法,python3使用需要修改語法:
1.>>> 94行
import io # import StringIO
2.>>> 539行
self.outputBuffer = io.StringIO()
3.>>> 631行
print(sys.stderr,'\nTime Elapsed: %s' % (self.stopTime-self.startTime))# print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
4.>>> 642行
if not cls in rmap:# if not rmap.has_key(cls):
5.>>> 766行
uo = e # uo = o.decode('latin-1')
6.>>> 772行
ue = e # ue = e.decode('latin-1')
改完后的HTMLTestRunner.py
創
python htmltestrunner.py下載好后放置位置
文件下載不用修改的:
鏈接:https://pan.baidu.com/s/1orJSihL8U_trJgiOvFaiXQ
提取碼:6jxe
復制這段內容后打開百度網盤手機App,操作更方便哦
放在*\python3\script
或者放在當前項目文件夾下
亦或者在python35下的lib文件夾下
(注意最好放在根目錄下)
from HTMLTestRunner import HTMLTestRunner #用這個導包會報錯的時候就用下面這樣的放到根目錄下
from pyJIAO.APP.APP.HTMLTestRunner import HTMLTestRunner #用這個導包就不會報錯了

python生成HTML報告代碼:
#unittest測試框架
#pytest比unittest全面一點
#導包
import requests#導入接口用的包
import unittest
# from HTMLTestRunner import HTMLTestRunner
# .HTMLTestRunner import HTMLTestRunner
from pyJIAO.APP.APP.HTMLTestRunner import HTMLTestRunner
import time
class Test(unittest.TestCase):
# 用於測試用例執行前的初始化工作
def setUp(self):
print("test start")
def test_bbb(self):
# print("test bbb")
url = "http://v.juhe.cn/cccn/to_telecodes.php"
para = {"chars": "北京", "key": "230a1fd1db939079697552e645799c0c"}
# 發送get請求
r = requests.get(url, params=para)
# 獲取json數據
print(r.json())
#
# def test_aaa(self):
# print("test aaa")
#
# 用於測試用例執行之后的善后工作
def tearDown(self):
print("test end")
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(Test("test_bbb"))
# suite.addTest(Test("test_aaa"))
now = time.strftime("%Y-%m-%d %H_%M_%S")
# 定義報告存放路徑
filename = 'E:\\' + now + 'result.html'
# filename ='test3.html'#報告存放在當前目錄
print(filename)
fp = open(filename, 'wb')
# 定義測試報告
runner = HTMLTestRunner(stream=fp, title='測試報告', description='用例執行情況:')
runner.run(suite)
fp.close() # 關閉報告文件