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. MySQL(二) decimal数据默认处理

    create table decimal_test(id int auto_increment PRIMARY key,score decimal(5,2) -- 取值范围是 -999.99 到 99 ...

  2. 【C++札记】引用

    介绍 引用是C++中特有的语法,在C语言中不存在. 本质上引用(reference)就是指针,在类型名后面加上一个&号就是引用类型. 1.指针与引用的定义进行比较 指针定义: 引用定义: in ...

  3. MySQL之mysqldump数据备份还原

    一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...

  4. C 统计用户输入的总行数和字符长度

    C 统计用户输入的总行数和字符长度 #include <stdio.h> #include <Windows.h> int main(void) { ]; ; ; printf ...

  5. WUST Oracle数据库 实验一实验二

    链接:https://pan.baidu.com/s/1hCzvTLzXhyItP2gD_69gzg 提取码:j68f 复制这段内容后打开百度网盘手机App,操作更方便哦

  6. SAS学习笔记37 宏程序中parmbuff选项

    该选项用于指定宏可以接受可变参数列表,而且参数值保存在SYSPBUFF宏变量中.parmbuff的参数价值,其实就是每次执行宏程序时,可以指定不同数量的参数值,这些宏参数被保存在&syspbu ...

  7. Unity插件研究-EasyTouch V5

    抽空研究了下Easy Touch 5插件,发现确实很好用,下面是相应的用法: 1. Easy Touch Controls:实现虚拟摇杆的组件 在项目的"Hierarchy"窗口下 ...

  8. (一)Centos之VMware虚拟机安装

    一.下载 64位的VM12 安装包: http://pan.baidu.com/s/1bpzoXQZ 二.安装 点击下一步: 老规矩,打勾,下一步: 这里我们新建一个文件夹 VM12 最好放在D盘或者 ...

  9. Abp SSO

    官方的文档有个坑. 首先建立的应该是 .net core  MPA版本. 把文档上的startup.cs配置写入 MVC 项目中. 这样测试才能通过.不然,测试项目     var disco = a ...

  10. 修改下jsp 默认编码,避免被坑

    修改下jsp 默认编码 ![](http://images2017.cnblogs.com/blog/1128666/201710/1128666-20171017143745927-14235413 ...