selenium+python自動化81-html報告最佳化(餅圖+失敗重跑+相容python2&3)

來源:互聯網
上載者:User

標籤: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>&nbsp;</td>    <td>&nbsp;</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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.