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学习笔记之os模块使用总结
Nov 03 Python
python监控网站运行异常并发送邮件的方法
Mar 13 Python
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
python实现简易通讯录修改版
Mar 13 Python
Python 忽略warning的输出方法
Oct 18 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
python tornado使用流生成图片的例子
Nov 18 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
python 监控logcat关键字功能
Sep 04 Python
Django模型层实现多表关系创建和多表操作
Jul 21 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/10/09 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
layui使用label标签的方法
2019/09/14 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
python的依赖管理的实现
2019/05/14 Python
用 Python 制作地球仪的方法
2020/04/24 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
机电一体化专业应届生求职信
2013/11/27 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
出国留学介绍信
2014/01/13 职场文书
技校个人求职信范文
2014/01/25 职场文书
环保公益广告语
2014/03/13 职场文书
男女朋友协议书
2014/04/23 职场文书
支行行长竞聘报告
2014/11/06 职场文书
会计求职自荐信范文
2015/03/04 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
公司年会晚会开幕词
2019/04/02 职场文书