unittest,selenium——批量,多線程執行多文檔用例


之前做過批量執行多.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效果拔群

 

根據日期生成報告:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM