Python多线程应用于自动化测试操作示例
作者:oOo右右 发布时间:2021-04-09 19:20:58
标签:Python,多线程,自动化测试
本文实例讲述了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()
测试结果:
由测试结果得到:多线程同时开始执行测试用例,大大缩小测试总时间。
多线程结合分布式执行测试用例
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程序设计有所帮助。
来源:https://blog.csdn.net/JOJOY_tester/article/details/54236473


猜你喜欢
- 有时候我们会在页面上显示用户的所在地区,这个原理是:先得到用户的IP,然后去查询将IP转换成一个数值,最后去查这个数值所在的范围,来得到用户
- 这是一套适用于JavaScript程序的编码规范。它基于Sun的Java程序编码规范。但进行了大幅度的修改, 因为JavaScript不是J
- 1 获取轮廓OpenCV2获取轮廓主要是用cv2.findContoursimport numpy as npimport cv2im =
- 我是新手学习如何管理和导航MySQL数据库和表是要掌握的首要任务之一,下面的内容将主要对MySQL的数据库和表的一些常用命令进行总结,一些我
- 字典数据结构分析/* The ma_values pointer is NULL for a combined table * or poi
- 交叉表(cross-tabulation,简称crosstab)是⼀种⽤于计算分组频率的特殊透视表。语法详解:pd.crosstab(ind
- 个人网站如有会员注册模块+动网论坛的话,那网站要与动网论坛系统整合,实现不同Web系统之间的用户信息同步更新、登录等操作就不是件容易的事了,
- 步骤很简单,直接进入主题。第一步:创建一个python项目。解析器什么的自己选择,环境目录默认就好。第二步:下载scrapy,步骤file-
- 在写论文时,如果是菜鸟级别,可能不会花太多时间去学latex,直接用word去写,但是这有一个问题,当我们用其他工具画完实验彩色图时,放到w
- JS高级 一、JS的数据类型 1.基本类型 JS共有5大基本类型,分别是: 1)Undefined。他只有一个值:undefined。如果一
- Timeloop是一个库,可用于运行多周期任务。这是一个简单的库,使用decorator模式在线程中运行标记函数。首先安装timeloop库
- 几年前,看到一台湾人写的一段程序(好像是《日语基础》),在网页上实现音视频与文字的同步播放(就是音视频播到哪部分,相应的文字就亮显,点击某一
- 我之前写过一篇基于JS的石头剪子布程序 《JavaScript实现的石头剪刀布游戏源码分享》,今天又基于Python写了一个实例,这里边的算
- Anaconda简介Anaconda,是一个开源的Python发行版本,其包含了conda、Python以及一大堆安装好的工具包及依赖项,比
- 简介CountVectorizer官方文档。将一个文档集合向量化为为一个计数矩阵。如果不提供一个先验字典,不使用分析器做某种特征选择,那么特
- 1. 概述快过年了,刚刚收到了两个消息,一个好消息,一个坏消息。先说好消息,好消息就是微信群里有人要发红包,开心~不过转念一想,前几次的红包
- 1. 二维(多维)数组降为一维数组方法1: reshape()+concatenate 函数,这个方法是间接法,利用 reshape() 函
- 介绍残差网络是何凯明大神的神作,效果非常好,深度可以达到1000层。但是,其实现起来并没有那末难,在这里以tensorflow作为框架,实现
- 引言微信小程序为了优化用户体验,取消了在进入小程序时立马出现授权窗口。需要用户主动点击按钮,触发授权窗口。那么,在我实践过程中,出现了以下问
- 目录1. np.multiply()函数1.1数组场景1.2 矩阵场景2. np.dot()函数2.1 数组场景2.2 矩阵场景3. 星号(