Python多线程应用于自动化测试

将多线程在测试巧妙地应用,确实会带来很多好处,并且这是充分利用机器资源执行高效率测试很好的方式

# -*- coding: utf-8 -*-
import threading
from time import ctime
import time
from selenium import webdriver def test_search(browser, word):
print("Start search at: %s\n" % ctime())
print("Browser is: %s\n" % browser)
if browser == 'ie':
browser_driver = webdriver.Ie()
elif browser == 'chrome':
browser_driver = webdriver.Chrome()
elif browser != 'ie' and browser != 'chrome':
print("browser 参数非'ie 或 chrome'启动Fiefox")
browser_driver = webdriver.Firefox() browser_driver.get("http://www.baidu.com")
browser_driver.find_element_by_id("kw").send_keys(word)
browser_driver.find_element_by_id("su").click()
time.sleep(3)
browser_driver.quit() if __name__ == '__main__':
dicts = {'chrome':'__davieyang__','ie':'davieyang','davieyang':'davieyang__'}
threads = []
for browser, word in dicts.items():
t = threading.Thread(target = test_search, args=(browser, word))
threads.append(t)
for t in range(len(dicts)):
threads[t].start()
for t in range(len(dicts)):
threads[t].join()
# -*- coding: utf-8 -*-
from selenium import webdriver
from time import sleep
from time import ctime
import multiprocessing def start_browser(browser, time):
if browser == "chrome":
print("starting chrome browser now! %s" % ctime()) # 控制台打印当前时间
chrome_driver = webdriver.Chrome()
chrome_driver.get("http://www.baidu.com")
sleep(time)
chrome_driver.quit()
elif browser == "firefox":
print("starting firefox browser now! %s" % ctime()) # 控制台打印当前时间
fire_driver = webdriver.Firefox()
fire_driver.get("http://www.baidu.com")
sleep(time)
fire_driver.quit()
else:
print("starting ie browser now! %s" %ctime()) # 控制台打印当前时间
ie_driver = webdriver.Ie()
ie_driver.get("http://www.baidu.com")
sleep(time)
ie_driver.quit() # 定义字典参数
browser_dict = {"chrome": 3, "firefox": 4}
# 定义空List用于存储进程
start_browser_processing = []
# 循环字典Key-Value,创建进程并加入到List中
for browser, time in browser_dict.items():
processing_browser = multiprocessing.Process(target = start_browser, args = (browser, time))
start_browser_processing.append(processing_browser) if __name__ == '__main__':
for processing_browser in range(len(browser_dict)):
start_browser_processing[processing_browser].start()
for processing_browser in range(len(browser_dict)):
start_browser_processing[processing_browser].join()
print(u"全部结束 %s" % ctime())

Python多线程应用于自动化测试的更多相关文章

  1. Python多线程Selenium跨浏览器测试

    前言 在web测试中,不可避免的一个测试就是浏览器兼容性测试,在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,以检测不同浏 ...

  2. 【Python】详解Python多线程Selenium跨浏览器测试

    前言 在web测试中,不可避免的一个测试就是浏览器兼容性测试,在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,以检测不同浏 ...

  3. [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)

    [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...

  4. python多线程学习记录

    1.多线程的创建 import threading t = t.theading.Thread(target, args--) t.SetDeamon(True)//设置为守护进程 t.start() ...

  5. python多线程编程

    Python多线程编程中常用方法: 1.join()方法:如果一个线程或者在函数执行的过程中调用另一个线程,并且希望待其完成操作后才能执行,那么在调用线程的时就可以使用被调线程的join方法join( ...

  6. Python 多线程教程:并发与并行

    转载于: https://my.oschina.net/leejun2005/blog/398826 在批评Python的讨论中,常常说起Python多线程是多么的难用.还有人对 global int ...

  7. python多线程

    python多线程有两种用法,一种是在函数中使用,一种是放在类中使用 1.在函数中使用 定义空的线程列表 threads=[] 创建线程 t=threading.Thread(target=函数名,a ...

  8. python 多线程就这么简单(转)

    多线程和多进程是什么自行google补脑 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的 ...

  9. python 多线程就这么简单(续)

    之前讲了多线程的一篇博客,感觉讲的意犹未尽,其实,多线程非常有意思.因为我们在使用电脑的过程中无时无刻都在多进程和多线程.我们可以接着之前的例子继续讲.请先看我的上一篇博客. python 多线程就这 ...

随机推荐

  1. CSS History

    Preface 如果只是要写程序,那的确是不需要这么麻烦,上来直接看Syntax,动手写上至少300行代码,做上3个应用程序,这门语言你也就差不多会用了,接下来不过就是模式,特殊的地方以及记住一些函数 ...

  2. C#实现动态发布IIS站点帮助类

    准备工作: 1.引用 System.DirectoryServices 系统程序集 2.引用 Microsoft.Web.Administration 程序集,类库位置在 C:\Windows\Sys ...

  3. chapter01图像基本操作

    刚刚开始学习opencv,来记录一下自己的学习笔记,也向各位大牛虚心求教 一.图片的基本知识 只要是彩色的图片都有三个颜色通道,即RGB,用三个矩阵来表示. 三个矩阵的同一个坐标位置上的数值描述的是一 ...

  4. 通过js操作,将div设置为contenteditable的内容设为全选状态

    因为div设置为contenteitable可编辑的文本内容用 select()选择全部内容不生效,所以只能用下列方法: 先 creatTextRange或者 createRange <div ...

  5. 开源定时任务框架Quartz(二)

    概述 上一篇文章完成了第一个Quartz程序的编写,这篇从Quartz中的几个重要对象来更深一层认识Quartz框架. Job和JobDetail Job是Quartz中的一个接口,接口下只有exec ...

  6. C语言 - cJSON解析特定格式 含有数组array类型的数据

    在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...

  7. laravle6.0-IOC-DI浅谈

    1.什么是IOC,DI IOC(Inversion of Control)控制反转:ioc意味着,你将自己设计好的对象交给容器来控制,而不是传统的在你的对象内部直接控制.比如: 人 操控 手机 做一些 ...

  8. Python——类和对象(一)

    一.定义类 在面向对象的程序设计中有两种重要概念: 类:可以理解为一个种类,一个模型,是一种抽象的东西. 实例.对象:可以理解为一种具体制作或者存在的东西. 定义类的语法格式如下: class 类名: ...

  9. Ubuntu Server 18.04 无法修改 hostname

    对于运维而言,我们希望每台服务器的 hostname 都能体现出它自己的功能/ip,方便排查. ubuntu server live 18.04 的安装流程非常友好,从 ip 到 hostname 都 ...

  10. (三)Spring框架之事务管理

    一.编程式事务管理 Spring事务管理器的接口是org.springframework.transaction.PlatformTransactionManager,事务管理器接口PlatformT ...