1.說明html
在我前一篇文件(Python+Selenium----使用HTMLTestRunner.py生成自動化測試報告1(使用IDLE ))中簡單的寫明瞭,如何生產測試報告,可是使用IDLE很麻煩,並且在實際的項目中也不方便,因此,查了不少資料來研究如何在PyCharm中生成測試報告,故此記錄一下(命名什麼的不規範就不要糾結了)。python
2.步驟web
第一步:下載HTMLTestRunner.pychrome
參考:Python+Selenium----使用HTMLTestRunner.py生成自動化測試報告1(使用IDLE )app
第二步:PyCharm中生成測試報告函數
前提:方法運行成功,顯示ok,可是沒有生成測試報告,此時能夠採用一下幾種方法中的其中一種,進行處理,而後就能夠順利的生成測試報告啦~~單元測試
方法一:修改運行路徑(比較麻煩,每次運行的文件可能都會更改)測試
(項目結構圖)ui
(2.1.1)PyCharm右上角,在要運行的文件上點擊宣選擇"Edit Configurations..."url
(2.1.2)在打開的彈出框中,在Python tests裏找到本身要運行的文件,修改他的路徑爲運行文件路徑,修改完成以後先apply再點擊ok,而後在PyCharm右上角點擊「運行」,運行完成,就會發現測試報告生成了奧~~
方法二:在main函數上運行.py文件
咱們在main函數中簡單的添加一句打印代碼,發現,在.py中隨意找個地方,鼠標右鍵「run」以後,並未打印,可見,腳本運行時並無執行裏面的代碼,爲何沒有執行裏面的代碼呢?由於在Pycharm不一樣的地方右鍵後,運行腳本獲得的結果是不同的,執行的代碼段不同,因此,咱們能夠在main函數處,右鍵,運行腳本,運行完成,就會生成測試報告文件(可是,我在main函數處運行,我一個測試運行,跑了2次,尷尬,暫時不知道爲何)
import time import unittest import HTMLTestRunner #直接將HTMLTestRunner.py放到python安裝目錄下的Lib中便可 from selenium import webdriver class Baidu(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome('F:\\Python\\workspace\\selenium_demo3_test\\drivers\\chromedriver.exe') self.driver.implicitly_wait(30) self.base_url = "http://www.baidu.com/" self.verificationErrors = [] self.accept_next_alert = True # 百度搜索用例 def test_baidu_search(self): driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() time.sleep(2) def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": print('11111111111111111111111111111111111111111111') # 定義一個單元測試容器 testunit = unittest.TestSuite() # 將測試用例加入到測試容器中 testunit.addTest(Baidu("test_baidu_search")) # 定義個報告存放路徑,支持相對路徑 filename = 'F:\\Python\\workspace\\demo\\result.html' fp = open(filename, 'wb') # 定義測試報告 runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='測試報告hahhahahah', description='用例執行狀況hahhaahha:' ) # 運行測試用例 runner.run(testunit) # 寫完以後必須將fp關閉,不然報告是空的 fp.close()
方法三:定義一個函數,講main函數中的內容複製到該函數中,在main函數中,運行本身定義的函數,也能夠正常生成測試報告
testBaogao.py
import time import unittest import HTMLTestRunner #直接將HTMLTestRunner.py放到python安裝目錄下的Lib中便可 from selenium import webdriver from demo.Baogao import * class Baidu(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome('F:\\Python\\workspace\\selenium_demo3_test\\drivers\\chromedriver.exe') self.driver.implicitly_wait(30) self.base_url = "http://www.baidu.com/" self.verificationErrors = [] self.accept_next_alert = True # 百度搜索用例 def test_baidu_search(self): driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() time.sleep(2) def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": print('1111111111111111111111111111111111111') test_baogao() #調用另一個函數
Baogao.py
import HTMLTestRunner from demo.testBaogao import * def test_baogao(): # 定義一個單元測試容器 testunit = unittest.TestSuite() # 將測試用例加入到測試容器中 testunit.addTest(Baidu("test_baidu_search")) # 定義個報告存放路徑,支持相對路徑 filename = 'F:\\Python\\workspace\\demo\\result.html' fp = open(filename, 'wb') # 定義測試報告 runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title=u'百度搜索測試報告', description=u'用例執行狀況:' ) # 運行測試用例 runner.run(testunit) # 寫完以後必須將fp關閉,不然報告是空的 fp.close()
如上demo所示,在testBaogao.py文件中隨意地方運行文件便可生成測試報告。