欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用 HTMLTestRunner.py生成測試報告

 更新時間:2017年10月20日 11:07:15   作者:anlcy  
這篇文章主要介紹了python使用 HTMLTestRunner.py生成測試報告 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文介紹了python使用 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 Widget

class WidgetTestCase(unittest.TestCase):
 def setUp(self):
  self.widget=Widget()
  
 def tearDown(self):
  self.widget.dispose()
  self.widget=None
  
 def 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-8

from lib import HTMLTestRunner
import unittest
from testcase5_dynamic import WidgetTestCase

if __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,這樣再運行之后打開就會看到報告內(nèi)容。

 

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 已經(jīng)不支持 has_key函數(shù),我們需要使用in 來進行遍歷。

解決方法:

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

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

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

解決方法:

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

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

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

原因:定位一下,報在了778行的內(nèi)容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. 調(diào)用語句更改

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

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

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

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

HTMLTestRunner.py 的使用備注

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

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

解決方案: 調(diào)用HTMLTestRunner時,定義 verbosity 為大于1的整數(shù),比如說 2:

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

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

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 方法。
# 用于命令行執(zhí)行測試

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

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

測試案例:
1.登錄百度云
2.進入“立即注冊百度賬號”網(wǎng)頁
3.進入”會員中心”網(wǎng)頁
4.生成測試報告的文件名為:2015-01-02result.html。

測試腳本:

#coding=utf-8  #防止中文亂碼
from selenium import webdriver
from selenium.webdriver.common.by import By
#加載鍵盤使用的模塊
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException

#加載unittest模塊
import unittest 
import time
import re
#加載HTMLTestRunner,用于生成HTMLreuslt
import HTMLTestRunner

class BaiduYun(unittest.TestCase):
 def setUp(self):
  self.browser=webdriver.Chrome()
  self.browser.implicitly_wait(30)
  self.base_url="http://yun.baidu.com"
  self.verficationErrors=[]
  self.accept_next_alert=True
 def Login(self):
  browser=self.browser
  browser.get(self.base_url+'/')
  u"""百度云登錄"""
  browser.find_element_by_name("userName").clear()   
  username=browser.find_element_by_name("userName")    
  username.send_keys("alu***")
  username.send_keys(Keys.TAB)
  time.sleep(2)
  password=browser.find_element_by_name("password")
  password.send_keys("***")
  password.send_keys(Keys.ENTER)
  time.sleep(3)
  browser.close()
 def Register(self):
  browser=self.browser
  browser.get(self.base_url+'/')
  u"""立即注冊百度賬號"""
  browser.find_element_by_class_name("link-create").click()
  time.sleep(2)
  browser.close()
 def Link(self):
  browser=self.browser
  browser.get(self.base_url+'/')
  u"""會員中心"""
  browser.find_element_by_link_text("會員中心").click()
  time.sleep(2)
  browser.close()
 def tearDown(self):
  self.browser.quit()
  self.assertEqual([],self.verficationErrors) 
if __name__=="__main__":
 #unittest.main()
 testunit=unittest.TestSuite()
 #將測試用例加入到測試容器中
 testunit.addTest(BaiduYun("Login"))
 testunit.addTest(BaiduYun("Register"))
 testunit.addTest(BaiduYun("Link"))
 #獲取當前時間,這樣便于下面的使用。
 now = time.strftime("%Y-%m-%M-%H_%M_%S",time.localtime(time.time())) 
 #打開一個文件,將result寫入此file中
 fp=open("result"+now+".html",'wb')
 runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='test result',description=u'result:')
 runner.run(testunit) 
 fp.close()

F5,運行,就這樣得到了test result

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • TENSORFLOW變量作用域(VARIABLE SCOPE)

    TENSORFLOW變量作用域(VARIABLE SCOPE)

    這篇文章主要介紹了TENSORFLOW變量作用域(VARIABLE SCOPE),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • 基于python實現(xiàn)復制文件并重命名

    基于python實現(xiàn)復制文件并重命名

    這篇文章主要介紹了基于python實現(xiàn)復制文件并重命名,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 利用python做數(shù)據(jù)擬合詳情

    利用python做數(shù)據(jù)擬合詳情

    這篇文章主要介紹了利用python做數(shù)據(jù)擬合,下面文章圍繞如何讓利用python做數(shù)據(jù)擬合的相關資料展開詳細內(nèi)容,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11
  • python機器學習理論與實戰(zhàn)(四)邏輯回歸

    python機器學習理論與實戰(zhàn)(四)邏輯回歸

    這篇文章主要為大家詳細介紹了python機器學習理論與實戰(zhàn)第四篇,邏輯回歸的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python數(shù)據(jù)庫操作指南之PyMysql使用詳解

    python數(shù)據(jù)庫操作指南之PyMysql使用詳解

    PyMySQL是在Python3.x版本中用于連接MySQL服務器的一個庫,Python2 中則使用mysqldb,下面這篇文章主要給大家介紹了關于python數(shù)據(jù)庫操作指南之PyMysql使用的相關資料,需要的朋友可以參考下
    2023-03-03
  • 關于DataFrame中某列值的替換map(dict)

    關于DataFrame中某列值的替換map(dict)

    這篇文章主要介紹了關于DataFrame中某列值的替換map(dict),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python裝飾器使用方法實例

    python裝飾器使用方法實例

    這篇文章主要介紹了python裝飾器的使用方法,大家參考使用
    2013-11-11
  • Python入門教程(十)Python布爾值介紹

    Python入門教程(十)Python布爾值介紹

    這篇文章主要介紹了Python入門教程(十)Python布爾值,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • python命令行引導用戶填寫可用的ip地址和端口號實現(xiàn)

    python命令行引導用戶填寫可用的ip地址和端口號實現(xiàn)

    這篇文章主要為大家介紹了python命令行引導用戶填寫可用的ip地址和端口號實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • OpenCV自動給圖片添加彩虹特效的實現(xiàn)示例

    OpenCV自動給圖片添加彩虹特效的實現(xiàn)示例

    圖像處理的學習往往都是要先熟悉下圖像的一些基本處理方法,本文主要介紹了OpenCV自動給圖片添加彩虹特效的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論