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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
python实现探测socket和web服务示例
Mar 28 Python
Python 转义字符详细介绍
Mar 21 Python
python中解析json格式文件的方法示例
May 03 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
Python中反射和描述器总结
Sep 23 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
sklearn的predict_proba使用说明
Jun 28 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 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
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
js删除所有的cookie的代码
2010/11/25 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
JsRender实用入门教程
2014/10/31 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
小学敬老月活动方案
2014/02/11 职场文书
酒店开业策划方案
2014/06/02 职场文书
社区服务活动小结
2014/07/08 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
先进单位申报材料
2014/12/25 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python