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实现基于权重的随机数2种方法
Apr 28 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
python 弧度与角度互转实例
Apr 15 Python
python字符串的index和find的区别详解
Jun 20 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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 登录记住密码实现思路
2013/05/07 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
页面实时更新时间的JS实例代码
2013/12/18 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python检测远程服务器tcp端口的方法
2015/03/14 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
python实用代码片段收集贴
2015/06/03 Python
树莓派实现移动拍照
2019/06/22 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
大学生演讲稿
2014/04/25 职场文书
阅兵口号
2014/06/19 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL