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函数中的默认参数
Mar 30 Python
python基础知识小结之集合
Nov 25 Python
Python+django实现文件上传
Jan 17 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
Python计算IV值的示例讲解
Feb 28 Python
python实现梯度下降和逻辑回归
Mar 24 Python
python中JWT用户认证的实现
May 18 Python
python小白学习包管理器pip安装
Jun 09 Python
python中mongodb包操作数据库
Apr 19 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生成带有雪花背景的验证码
2006/10/09 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
js实现图片实时时钟
2020/01/15 Javascript
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
python paramiko模块学习分享
2017/08/23 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python判断有效的数独算法示例
2019/02/23 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
《骆驼和羊》教学反思
2014/02/27 职场文书
土地转让协议书范本
2014/04/15 职场文书
说明书格式及范文
2014/05/07 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
作文评语集锦
2014/12/25 职场文书
七年级上册生物的课件
2019/08/07 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
KVM基础命令详解
2022/04/30 Servers