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 字符串split的用法分享
Mar 23 Python
Python中将字典转换为列表的方法
Sep 21 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
Python 中的Selenium异常处理实例代码
May 03 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
Python super()方法原理详解
Mar 31 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 Python
基于python实现坦克大战游戏
Oct 27 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
PHPUnit安装及使用示例
2014/10/29 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
loading动画特效小结
2017/01/22 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
js验证密码强度解析
2020/03/18 Javascript
python使用matplotlib绘制折线图教程
2017/02/08 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
Python如何读取文件中图片格式
2020/01/13 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
python程序需要编译吗
2020/06/19 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
寄语学生的话
2014/04/10 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
企业年检委托书范本
2014/10/14 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
销售督导岗位职责
2015/04/10 职场文书
政审证明材料
2015/06/19 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
Mysql排序的特性详情
2021/11/01 MySQL