Python3 引用HTMLTestRunner生成測試報告

Appium環境搭建以及運行測試用例的工具都在前兩篇文章中介紹過了鏈接如下,今天就簡單學習一下如何在跑完測試用例之後生成一張簡單的測試報告。

Appium環境搭建: https://blog.csdn.net/CCstar1/article/details/101543977

Appium+VSCode環境搭建:https://blog.csdn.net/CCstar1/article/details/102498604

一.下載HTMLTestRunner.py

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

下載下來記得一定要放在lib/python3.7 路徑下,參考我的完整路徑是:

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/HTMLTestRunner.py

二.修改HTMLTestRunner.py文件滿足python3

由於我們下載到的這個HTMLTestRunner.py文件是基於python2寫的,並不能在python3使用。我們需要手動更改文件使之可以在python3中使用。下面詳細介紹需要更改的幾個地方。這裏我使用VSCode打開修改。

1、第94行

import StringIO
更改爲:

import io
2、第539行

self.outputBuffer = StringIO.StringIO()
更改爲:

self.outputBuffer = io.StringIO()
3、第631行

print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
更改爲:

sys.stderr.write('\nTime Elapsed: %s\n' % (self.stopTime - self.startTime))
4、第642行

if not rmap.has_key(cls):
更改爲:

if cls not in rmap:
5、第687行

self.stream.write(output.encode('utf8'))
更改爲:

self.stream.write(output)
6、第766行

uo = o.decode('latin-1')
更改爲:

uo = o
7、第772行

ue = e.decode('latin-1')
更改爲:

ue = e
8、第778行

output = saxutils.escape(uo+ue),
更改爲:

output = saxutils.escape(str(uo)+ue),

這裏由於我存儲和多次複製粘貼導致HTMLTestRunner亂碼浪費了很多時間,和我一樣對Python算小白如果引用遇到問題可以向這個方面考慮。

三.編寫代碼生成測試報告

新建TestRunner.py,如下

import time
import os
import unittest

from HTMLTestRunner import HTMLTestRunner
test_dir = '/Users/xxx/Downloads/VSCodeAutoTest'
discover = unittest.defaultTestLoader.discover(test_dir, pattern="Test1*.py")

if __name__ == "__main__":
    report_dir = './TestReport'
    os.makedirs(report_dir, exist_ok=True)
    now = time.strftime("%Y-%m-%d %H-%M-%S")
    report_name = '{0}/{1}.html'.format(report_dir, now)

    with open(report_name, 'w')as f:
        runner = HTMLTestRunner(stream=f, title="測試報告", description="本測試報告內容包含登錄簡單測試")
        runner.run(discover)

在VSCode終端輸入:

python3 TestRunner.py

之後就會在TestReport目錄下生成2019-10-12 14-46-48.html測試報告,用瀏覽器打開如下圖所示:

簡單的測試報告就生成了,歡迎大家提問一起學習。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章