python多线程执行测试用例_selenium+python自动化90-unittest多线程执行用例

前言

假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时。。。

那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线程了,理论上开2个线程时间节省一半,开5个线程,时间就缩短五倍了。

项目结构

1.项目结构跟之前的设计是一样的:

case test开头的.py用例脚本

common 放公共模块,如HTMLTestRunner

report 放生成的html报告

run_all.py 用于执行全部脚本

1070438-20180131153126812-1481017706.png

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()

多线程执行

1.多线程设计思路:

先写一个run的函数

保证for循环能跑的通

在run函数上加个装饰器 @threads(n),n是线程数

2.run_all参考代码

# coding=utf-8

import unittest

from common import HTMLTestRunner

import os

from tomorrow import threads

# python2需要这三行,python3不需要

import sys

reload(sys)

sys.setdefaultencoding('utf8')

# 获取路径

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(3)

def run_case(all_case, report_path=reportpath, nth=0):

'''执行所有的用例, 并把结果写入测试报告'''

report_abspath = os.path.join(report_path, "result%s.html"%nth)

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 = add_case()

# 之前是批量执行,这里改成for循环执行

for i, j in zip(cases, range(len(list(cases)))):

run_case(i, nth=j) # 执行用例,生成报告

3.生成报告,这里生成的报告是多个的,每个.py脚本生成一个html的报告,接下来遇到的难点就是合并报告了

如何把多个html报告合并成一个报告呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是基于 PythonSeleniumunittest 的 UI 自动化测试框架搭建步骤: 1. 安装 PythonSelenium 在开始前,需要确保你的电脑上安装了 PythonSelenium。你可以在 Python 官网下载 Python 并安装,安装完成后,在命令行中输入以下命令安装 Selenium: ``` pip install selenium ``` 2. 创建一个测试项目 在你的工作目录中创建一个文件夹来存放你的测试项目,例如 `MyTestProject`。 3. 创建测试用例 在项目文件夹中创建一个文件来存放测试用例,例如 `test_example.py`,并在该文件中写入以下测试用例: ```python import unittest from selenium import webdriver class ExampleTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() def tearDown(self): self.driver.quit() def test_example(self): self.driver.get("https://www.example.com") self.assertIn("Example Domain", self.driver.title) if __name__ == '__main__': unittest.main() ``` 这个测试用例会打开 Example Domain 网站,并检查页面标题是否包含 "Example Domain"。 4. 运行测试用例 在命令行中进入项目文件夹,并执行以下命令来运行测试用例: ``` python test_example.py ``` 如果一切顺利,你将会看到测试用例执行成功的结果。 5. 扩展测试用例 你可以根据需要扩展测试用例,例如添加更多的测试步骤、使用断言来检查页面元素、使用数据驱动来进行多组数据的测试等等。 以上就是一个基于 PythonSeleniumunittest 的 UI 自动化测试框架搭建的基本步骤,你可以在此基础上进行进一步的优化和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值