Python多线程应用于自动化测试操作示例


Posted in Python onDecember 06, 2018

本文实例讲述了Python多线程应用于自动化测试操作。分享给大家供大家参考,具体如下:

多线程执行测试用例

实例:

import threading
from time import sleep,ctime
from selenium import webdriver
#测试用例1
def test_baidu(browser,search):
  print("开始,现在时间是%s"%ctime())
  print("浏览器是%s"%browser)
  if browser =="ff":
    driver = webdriver.Firefox()
  elif browser =="chrome":
    driver = webdriver.Chrome()
  elif browser =="ie":
    driver =webdriver.Ie()
  else:
    print("浏览器输入错误!")
  driver.get(r"http://www.baidu.com")
  driver.implicitly_wait(5)
  driver.find_element_by_xpath("//*[@id='kw']").send_keys(search)
  driver.find_element_by_id("su").click()
  sleep(2)
  driver.quit()
if __name__ =="__main__":
  #定义字典存放test_baidu函数的参数
  dicts = {"ff": "python", "chrome": "selenium", "ie": "unittest"}
  #创建空列表存放线程
  threads =[]
  #遍历字典,并把线程append进threads
  for browser,search in dicts.items():
    t = threading.Thread(target=test_baidu,args=(browser,search))
    threads.append(t)
  #把字典内容索引替代
  file = range(len(dicts))
  #启动线程
  for i in file:
    threads[i].start()
  #守护线程
  for i in file:
    threads[i].join()

测试结果:

Python多线程应用于自动化测试操作示例

由测试结果得到:多线程同时开始执行测试用例,大大缩小测试总时间。

多线程结合分布式执行测试用例

Selenium Girl 只是提供了多操作系统、多浏览器的执行环境,但不提供并行执行测试用例,Selenium Girl只能现在一个系统或浏览器上执行完测试用例外再从另一个操作系统或浏览器上执行测试用例。

启动Selenium server

在本机启动一个主hub和一个node节点:本机IP地址(192.168.0.101),节点端口4444/5555

java -jar selenium-server-standalone-2.48.0.jar -role hub

java -jar selenium-server-standalone-2.48.0.jar -role node -port 5555

启动一个远程node:p(192.168.0.102)在虚拟机里面:端口是6666

java -jar selenium-server-standalone-2.48.0.jar -role node -port 6666 -hub http://192.168.0.101:4444/gird/register

测试脚本:

'''
在不同主机、不同浏览器同时执行测试用例,多线程;
利用Selenium Girl提供分布式执行测试用例;
先启动Selenium server,这里分别在本地主机启动一个hub和一个node,在其他主机(虚拟机)启动一个node。
'''
from selenium.webdriver import Remote
import threading
from time import *
#测试用例
def test_baidu(host,browser):
  print("开始:%s"%ctime())
  print(host,browser)
  dc ={'browserName':browser}
  driver = Remote(
          command_executor=host,
          desired_capabilities=dc
  )
  driver.get(r'http://www.baidu.com')
  driver.implicitly_wait(10)
  driver.find_element_by_link_text("新闻").click()
  sleep(2)
  driver.get_screenshot_as_file(r'D:\testscreen\baidu.jpg')
  driver.quit()
if __name__ =='__main__':
  #启动参数,指定运行主机和浏览器
  lists={'http://127.0.0.1:4444/wd/hub':'chrome',
      'http://127.0.0.1:5555/wd/hub':'internet explorer',
      'http://192.168.216.128:6666/wd/hub':'firefox' #远程节点node
      }
  threads =[]
  files = range(len(lists))
  #创建线程,并append进线程组
  for host,browser in lists.items():
    t = threading.Thread(target=test_baidu,args=(host,browser))
    threads.append(t)
  #启动每一个线程
  for i in files:
    threads[i].start()
  #守护每一个线程
  for i in files:
    threads[i].join()

运行结果:

Python多线程应用于自动化测试操作示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python通过yield实现数组全排列的方法
Mar 18 Python
python批量制作雷达图的实现方法
Jul 26 Python
python获取多线程及子线程的返回值
Nov 15 Python
dataframe设置两个条件取值的实例
Apr 12 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
Python RabbitMQ消息队列实现rpc
May 30 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
python3获取当前目录的实现方法
Jul 29 Python
python输出pdf文档的实例
Feb 13 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
Python多分支if语句的使用
Sep 03 Python
Python实现多属性排序的方法
Dec 05 #Python
python通过ffmgep从视频中抽帧的方法
Dec 05 #Python
Python中xml和json格式相互转换操作示例
Dec 05 #Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 #Python
python_opencv用线段画封闭矩形的实例
Dec 05 #Python
在python中实现将一张图片剪切成四份的方法
Dec 05 #Python
python实现对任意大小图片均匀切割的示例
Dec 05 #Python
You might like
PHP STRING 陷阱原理说明
2010/07/24 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
python实现list由于numpy array的转换
2018/04/04 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
对python中各个response的使用说明
2020/03/28 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
个人自我鉴定写法
2013/11/30 职场文书
大学军训感言1500字
2014/03/09 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
婚宴主持词
2015/06/30 职场文书