之前做過批量執行多.py文件,為了省時也做過單py文件多線程,現在做多py文件用例多線程
# coding:utf-8
import unittest
import os
import time
import HTMLTestRunner
from tomorrow import threads
# python2需要這三行,python3不需要
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# 用例路徑
case_path = os.path.join(os.getcwd(), "case")#在現有路徑(os.getcwd())下加個/case,找到case路徑
# 報告存放路徑
report_path = os.path.join(os.getcwd(), "report")
def all_case():
discover = unittest.defaultTestLoader.discover(case_path,
pattern="test*.py",
top_level_dir=None)#批量調用用例,參數分別是用例存放地址、用例名格式
return discover
@threads(3)
def run_case(all_case, report_path=report_path,nth=0):
'''執行所有的用例, 並把結果寫入測試報告'''
now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
report_abspath = os.path.join(report_path, "result_"+now+".html")
fp = open(report_abspath, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title=u'自動化測試報告,測試結果如下:',
description=u'用例執行情況:')
# 調用add_case函數返回值
runner.run(all_case)
fp.close()
if __name__ == "__main__":
# 用例集合
cases = all_case()
# 之前是批量執行,這里改成for循環執行
for i, j in zip(cases, range(len(list(cases)))):
run_case(i, nth=j) # 執行用例,生成報告
使用多線程之前用時35.7s:
使用之后網頁並行打開執行用例,用時19s效果拔群
根據日期生成報告: