日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

使用 HTMLTestRunner.py

發布時間:2024/4/17 HTML 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 HTMLTestRunner.py 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTMLTestRunner.py python 2版本

下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html

使用時,先建立一個”PyDev Package“,將下載下來的HTMLTestRunner.py文件拷貝在該目錄下。

例子:testcase5_dynamic.py

import unittest from dev.widget import Widgetclass WidgetTestCase(unittest.TestCase):def setUp(self):self.widget=Widget()def tearDown(self):self.widget.dispose()self.widget=Nonedef testSize(self):self.assertEqual(self.widget.getSize(), (40,40), "Wrong")def testResize(self):self.widget.resize(100, 100)self.assertEqual(self.widget.getSize(), (100,100), "Wrong")

html_report.py:

#coding:utf-8from lib import HTMLTestRunner import unittest from testcase5_dynamic import WidgetTestCaseif __name__=='__main__':suite=unittest.makeSuite(WidgetTestCase)filename='D:\\myreport.html'fp=file(filename,'wb')runner=HTMLTestRunner.HTMLTestRunner(fp,title=u'my unit test',description=u'This is a report test')runner.run(suite)

Run的時候,需要使用Python Run,使用Python unit-test跑測試生成不了myreport.html,目前還不知道為什么。

有時候,不會立即生成D:\\myreport.html,我們可以自己先建立一個空的myreport.html,這樣再運行之后打開就會看到報告內容。

HTMLTestRunner.py 的python3 版本

由于 HTMLTestRunner.py 原本就是python2版本,目前還沒找到python3版本,所以需要我們自己修改 HTMLTestRunner.py 文件。

1. 修改的地方

問題一:No module named StringIO

原因:python 3 中 沒有?StringIO 這個模塊。這里我們需要使用io 這個模塊來代替。

解決方法:

第94行引入的名稱要改,從 import StringIO?改成import io。

相應的,539行 self.outputBuffer = StringIO.StringIO()?要改成self.outputBuffer = io.BytesIO()


問題二:AttributeError: 'dict' object has no attribute 'has_key'

原因:python 3 字典類型的object 已經不支持 has_key函數,我們需要使用in 來進行遍歷。

解決方法:

定位到642行,if not rmap.has_key(cls): 需要換成 if not cls in rmap:


問題三:'str' object has no attribute 'decode'

原因:python3 里面對字符的操作中,decode已經拿掉了。

解決方法:

定位到772行,把 ue = e.decode('latin-1') 直接改成 ue = e 。

另外766還有類似的uo = o.decode('latin-1'),改成 uo=o ;


問題四 :TypeError: can't concat bytes to str

原因:定位一下,報在了778行的內容escape(uo+ue) 。這是因為我們上面給uo賦值的時候,走的是else流程,uo被賦值的是bytes類型的值。 而bytes類型不能直接轉化為str類型。所以我們需要在前面給uo賦值的時候先將bytes類型轉換為 str類型。

解決方法:

修改768行的?uo = o ,直接改成?uo = o.decode('utf-8') 。

另外 774還有類似的 ?ue = e, 改成?ue = e.decode('utf-8')。

?

問題五:TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and 'RPCProxy'

原因:?python3 ?不支持 print?>> sys.stderr 這種寫法,這里定義輸出流的話,采用print("This is print str",file=sys.stderr) 這種方式。

解決方法:

定位到631行,把print的語句修改掉,原來是print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime), 可改成?print('\nTime Elapsed: %s' % (self.stopTime-self.startTime),file=sys.stderr)

?

問題六:TypeError: 'str' does not support the buffer interface

原因:定位一下,問題出在118行,這里s是str類型,我們需要把傳過來的s轉化為bytes類型。

解決方法:

定位到118行,把?self.fp.write(s) 修改為?self.fp.write(bytes(s,'UTF-8')) 即可。

?

2. 保存

修改后對HTMLTestRunner.py 保存一下。

3. 調用語句更改

python3 里面打開文件使用 open,不要再去用file了。

即 fp = file(filename,'wb')替換成 fp = open(filename,'wb');

關閉該文件可用fp.close()

?

備注: 改動之后,中文也不會亂碼。

?

HTMLTestRunner.py 的使用備注

1. 問題: 執行測試用例的過程中,不會打印任何東西,導致上個廁所或第二天回來時,根本不知道執行到哪了,或者執行多少測試用例了。

解決思路: 每次執行一個測試用例時,就打印該測試用例的名稱。

解決方案: 調用HTMLTestRunner時,定義 verbosity 為大于1的整數,比如說 2:

runner=HTMLTestRunner.HTMLTestRunner(fp,title="xxxx",description="xxx",verbosity=2)

在控制臺console 就可以看到每執行一條用例,就會有如下輸出:

E test (testcases.login.testcase1.MyTest) ok test (testcases.login.testcase2.MyTest) F test (testcases.login.testcase3.MyTest)

2.?HTMLTestRunner 腳本閱讀。

class OutputRedirector(object) # 將輸出進行重定向class Template_mixin(object) # 定義生成HTML結果文件所需要的模板。 # 如果我們想改變HTML的格式等待,可以在這里進行改動class _TestResult(TestResult) # 定義繼承自 unittest.TestResult 的 類。 # 這里重寫了 unittest.TestResult 的多個方法,比如 startTest(self, test) 等等class HTMLTestRunner(Template_mixin) # 這里可以說是使用 HTMLTestRunner.py 的入口。定義了多個我們可以看到的方法,比如 run(self, test)class TestProgram(unittest.TestProgram) # 這里繼承自 unittest.TestProgram 類,重寫了 runTests 方法。 # 用于命令行執行測試

3. 缺點:使用HTMLTestRunner的執行測試用例的過程中,如果中間中斷執行,則已經執行完的用例結果也不會打印到html文件。

目前我這邊是自己編寫腳本生成html來代替使用?HTMLTestRunner ,感覺?HTMLTestRunner 應該沒有每執行一條用例就講結果寫入到html結果文件的方法。

?

轉載于:https://www.cnblogs.com/miniren/p/5301081.html

總結

以上是生活随笔為你收集整理的使用 HTMLTestRunner.py的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。