前言
假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时。。。 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线程了,理论上开2个线程时间节省一半,开5个线程,时间就缩短五倍了。 项目结构 1.项目结构跟之前的设计是一样的: · case test开头的.py用例脚本 · common 放公共模块,如HTMLTestRunner · report 放生成的HTML报告 · run_all.py 用于执行全部脚本 2.case文件夹里面用例参考# Coding:utf-8 import unittest from selenium import webdriver import time class Test1(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.firefox() def setUp(self): self.driver.get("http://www.cnblogs.com/yoyoketang/") def test_01(self): time.sleep(3) t = self.driver.Title print t # 随便写的用例,没写断言 def test_02(self): time.sleep(3) t = self.driver.Title print t h = self.driver.window_handles print h # 随便写的用例,没写断言 @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == "__main__": unittest.main() |
#!/usr/bin/env python# -*- Coding:utf-8 -*- #设置路径:Defualt Settings---Editor--file and Code Templatesimport unittestimport HTMLTestRunnerNewimport osfrom tomorrow import threads# 获取路径# 当前脚本所在目录curpath = os.path.dirname(os.path.realpath(__file__))#测试用例路径casepath = os.path.join(curpath, "case")#测试报告路径reportpath = os.path.join(curpath, "report")def add_case(case_path=casepath, rule="test*.py"): '''加载所有的测试用例''' discover = unittest.defaultTestLoader.discover(case_path, pattern=rule,top_level_dir=None) return discover@threads(5)def run_case(all_case, report_path=reportpath, nth=0): '''执行所有的用例, 并把结果写入测试报告''' report_abspath = os.path.join(report_path, "result%s.HTML"%nth) with open(report_abspath, "wb+") as file: runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file, Title=u'自动化测试报告,测试结果如下:',description=u'用例执行情况:') # 调用add_case函数返回值 runner.run(all_case)if __name__ == "__main__": # 用例集合 cases = add_case() # 之前是批量执行,这里改成for循环执行 for i, j in zip(cases, range(len(List(cases)))): run_case(i, nth=j) # 执行用例,生成报告 # print(i,j)
转载于:https://www.cnblogs.com/xyao1/p/10912717.HTML
总结以上是内存溢出为你收集整理的Python-Unittest多线程执行用例全部内容,希望文章能够帮你解决Python-Unittest多线程执行用例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)