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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
python从ftp下载数据保存实例
Nov 20 Python
Python写的创建文件夹自定义函数mkdir()
Aug 25 Python
python的Template使用指南
Sep 11 Python
Python内建数据结构详解
Feb 03 Python
《Python学习手册》学习总结
Jan 17 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
Pandas 缺失数据处理的实现
Nov 04 Python
keras绘制acc和loss曲线图实例
Jun 15 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
php分页函数
2006/07/08 PHP
基于文本的留言簿
2006/10/09 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
深入PHP数据加密详解
2013/06/18 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
php实例化一个类的具体方法
2019/09/19 PHP
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
如何查看python关键字
2021/01/17 Python
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
上级领导检查欢迎词
2015/09/30 职场文书
利用python进行数据加载
2021/06/20 Python
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js