1. 程式人生 > 其它 >基於python的自動化測試框架

基於python的自動化測試框架

轉發連結:https://blog.csdn.net/qq_41838901/article/details/89204623

 

前幾天大致搭了個基於python的自動化測試框架:

 

 

 

其中reports是用來放生成報告的======

 

HTMLtestrunner 是基於unittest單元測試的html的一個庫。

首先安裝,安裝的時候有點特殊,一般的python庫直接pip install ... 即可,安裝這個的時候我用這種方式試著安裝了下“testrunner”和“html-testrunner” 後面發現沒有正確的方法和引數,

遂上網搜了下,原來要自己先建立個HTMLTestRunner.py檔案,可以在這裡下載https://download.csdn.net/download/qq_41838901/11106286

下載後,將檔案複製到你的python安裝的lib目錄下面,然後import HTMLTestRunner 即可。

 

接下來,開始接著看怎麼生成html報告=======

放測試用例的檔案內容大致如下:

 

 

 

run_main.py 檔案裡面就是執行測試用例,並且生成HTMLTestRunner報告的方法:

import os
import unittest
import time
import HTMLTestRunner
#當前指令碼所在檔案真實路徑
cur_path = os.path.dirname(os.path.realpath(__file__))

#匹配所有的用例-以test開頭的檔案
def add_case(caseName="case",rule="test*.py"):
case_path = os.path.join(cur_path,caseName)
if not os.path.exists(case_path):os.mkdir(cur_path,caseName)
print("test case path:%s "%case_path)
discover = unittest.TestLoader().discover(case_path,pattern=rule,top_level_dir=None)
print(discover)
return discover

#執行用例生成報告
def run_case(reportName="reports"):
now = time.strftime("%Y_%m_%d %H_%M_%S",time.localtime(time.time()))
report_path = os.path.join(cur_path,reportName)
if not os.path.exists(report_path):os.mkdir(cur_path,reportName)
report_abspath = os.path.join(report_path,now+"result.html")
print("report path :%s"%report_abspath)
file = open(report_abspath, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=file, title='reports')
runner.run(add_case())

if __name__ =='__main__':
run_case()
然後在執行的時候,結果報錯了!!wtf!!

AttributeError: type object '_io.StringIO' has no attribute 'StringIO'

然後在網上搜索,發現是官網上的HTMLTestRunner.py檔案 是用python2語法寫的,然鵝,我這裡用的是python3!!

所以,需要修改lib/目錄下的HTMLTestRunner.py 檔案,修改內容大致如下:

第94行,將import StringIO修改成import io

第539行,將self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,將if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,將uo = o.decode('latin-1')修改成uo = e

第775行,將ue = e.decode('latin-1')修改成ue = e

第631行,將print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

具體可參考這篇文章:http://bbs.chinaunix.net/thread-4154743-1-1.html

 

修改後,再次執行測試用例,發現生成報告成功!!轉圈!!

 

 

 

 

 

使用HTMLTestRunner 生成報告心得-----------------------------------
1、在執行用HTMLTestRunner 生成測試報告的時候,程式的錯誤資訊是不會顯示在控制檯的,需要到他最後生成的報告裡面去看錯誤資訊,定位問題,如下: