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 ljust rjust center输出
Sep 06 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
如何搭建pytorch环境的方法步骤
May 06 Python
python爬虫容易学吗
Jun 02 Python
Python pip使用超时问题解决方案
Aug 03 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
Python中tqdm的使用和例子
Sep 23 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
星际RPG字典
2020/03/04 星际争霸
Zerg基本策略
2020/03/14 星际争霸
zf框架db类的分页示例分享
2014/03/14 PHP
php数据库备份还原类分享
2014/03/20 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
Python定时任务sched模块用法示例
2018/07/16 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
python数值基础知识浅析
2019/11/19 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
一个大学生十年的职业规划
2014/01/17 职场文书
好人好事事迹材料
2014/02/12 职场文书
小学数学课题方案
2014/06/15 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
资金申请报告范文
2015/05/14 职场文书
课改心得体会范文
2016/01/25 职场文书