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个xml内容的方法
May 11 Python
使用python实现个性化词云的方法
Jun 16 Python
python 中的int()函数怎么用
Oct 17 Python
通过python+selenium3实现浏览器刷简书文章阅读量
Dec 26 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
python实现猜单词小游戏
May 22 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Python模块、包(Package)概念与用法分析
May 31 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
Python使用requests模块爬取百度翻译
Aug 25 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
我的论坛源代码(五)
2006/10/09 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
php头像上传预览实例代码
2017/05/02 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
node.js中watch机制详解
2014/11/17 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
linux下python抓屏实现方法
2015/05/22 Python
详解Python import方法引入模块的实例
2017/08/02 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python 等差数列末项计算方式
2020/05/03 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
How TDD works
2012/09/30 面试题
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
创业计划书之花店
2019/09/20 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS