標籤:category .com loader html 小夥伴 測試 eth 預設 stl
最佳化html報告
為了滿足小夥伴的各種變態需求,為了裝逼提升逼格,為了讓報告更加高大上,測試報告做了以下最佳化:
- 測試報告中文顯示,最佳化一些宣告失敗本文亂碼問題
- 新增錯誤和失敗,展示到html報告裡
- 最佳化點擊放大不清晰問題
- 增加餅圖統計
- 失敗後重試功能
- 相容python2.x 和3.x
報告效果
1.產生的測試報告效果如,預設展示報錯和異常的用例,失敗重試的用例結果也會統計進去。
2.點擊顯示,可以直接顯示截取的圖片,無需儲存到本地
table表格
1.修改表格的td後面內容,可以自訂表格格名稱
2.drawCircle這個後面是產生餅圖功能
<tr id=‘header_row‘> <td>測試組/測試案例</td> <td>總數</td> <td>通過</td> <td>失敗</td> <td>錯誤</td> <td>視圖</td> <td>錯誤</td></tr>%(test_list)s<tr id=‘total_row‘> <td>統計</td> <td>%(count)s</td> <td>%(Pass)s</td> <td>%(fail)s</td> <td>%(error)s</td> <td> </td> <td> </td></tr></table><script> drawCircle(%(Pass)s, %(fail)s, %(error)s)</script>
異常
1.這個是用例跑失敗後,會自動的,圖片以base64方式儲存到html報告裡面,無需儲存到本地
driver.get_screenshot_as_base64()
def addError(self, test, err): self.error_count += 1 self.status = 1 TestResult.addError(self, test, err) _, _exc_str = self.errors[-1] output = self.complete_output() self.result.append((2, test, output, _exc_str)) try: driver = getattr(test, "driver") test.img = driver.get_screenshot_as_base64() except AttributeError: test.img = "" if self.verbosity > 1: sys.stderr.write(‘E ‘) sys.stderr.write(str(test)) sys.stderr.write(‘\n‘) else: sys.stderr.write(‘E‘)
2.測試案例一定要定義driver參數,如:
driver = webdriver.Firefox()
失敗重試
1.產生報告的參數裡面加了一個參數retry=1,這個表示用例失敗後,會重新跑一次。
# coding:utf-8import HTMLTestRunner_jpgimport unittestif __name__ == "__main__": discover = unittest.defaultTestLoader.discover("case","test*.py") print(discover) run = HTMLTestRunner_jpg.HTMLTestRunner(title="可以裝逼的測試報告", description="測試結果", stream=open("result.html","wb"), verbosity=2, retry=1) run.run(discover)
2.verbosity=2這個參數是控制台顯示測試結果風格,如下這種:
E test_01 (pject.test_jpg.Test1)retesting... 1E test_01 (pject.test_jpg.Test1)F test_02 (pject.test_jpg.Test1)retesting... 1F test_02 (pject.test_jpg.Test1)ok test_03 (pject.test_jpg.Test1)ok test_01 (pject.test_xxx.Test1)ok test_02 (pject.test_xxx.Test1)Time Elapsed: 0:00:17.892222
執行用例
1.這是參考的測試案例,我沒在用例裡面產生測試報告,產生測試報告採用的是上面的批量執行,單獨建個指令碼執行
# coding:utf-8from selenium import webdriverimport unittestclass Test1(unittest.TestCase): u‘‘‘部落格園測試‘‘‘ @classmethod def setUpClass(cls): cls.driver = webdriver.Firefox() @classmethod def tearDownClass(cls): cls.driver.quit() def test_01(self): u"""定位失敗案例""" self.driver.get("https://www.baidu.com") self.driver.find_element_by_id(‘xxxxx‘).send_keys(u‘百度一下‘) self.driver.find_element_by_id(‘su‘).click() self.assertTrue(True) def test_02(self): u‘‘‘失敗用例‘‘‘ self.driver.get("http://www.cnblogs.com/yoyoketang/") t = self.driver.title self.assertIn(u"失敗用例",t) def test_03(self): u‘‘‘通過用例‘‘‘ self.driver.get("http://www.cnblogs.com/yoyoketang/") self.assertIn(u"上海",self.driver.title)if __name__ == "__main__": unittest.main()
參考大神github
大神github點這裡
最佳化後源碼
1.這個是在大神的基礎上稍微做了一點點圖片顯示的最佳化,之前的圖片太小,顯示模糊,放大了下
2.然後重新整理了下,採用批量執行用例的方式
3.參考代碼從github下載吧
https://github.com/yoyoketang/selenium_report/
selenium+python自動化81-html報告最佳化(餅圖+失敗重跑+相容python2&3)