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下如何查询CS反恐精英的服务器信息
Jan 17 Python
python实现12306抢票及自动邮件发送提醒付款功能
Mar 08 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
详解Python中的测试工具
Jun 09 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
python实现连连看游戏
Feb 14 Python
详解python中groupby函数通俗易懂
May 14 Python
python集合能干吗
Jul 19 Python
python与js主要区别点总结
Sep 13 Python
python实现Nao机器人的单目测距
Sep 04 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获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
如何解决vue在ios微信"复制链接"功能问题
2020/03/26 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
深入解读Python解析XML的几种方式
2016/02/16 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
浅谈Python中(&,|)和(and,or)之间的区别
2019/08/07 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
Python 远程开关机的方法
2020/11/18 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
环境科学毕业生自荐信
2013/11/21 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
关爱残疾人标语
2014/06/25 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
死亡诗社观后感
2015/06/05 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python