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

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

  1. # -*- coding: utf-8 -*-
  2. import threading
  3. from time import ctime
  4. import time
  5. from selenium import webdriver
  6.  
  7. def test_search(browser, word):
  8. print("Start search at: %s\n" % ctime())
  9. print("Browser is: %s\n" % browser)
  10. if browser == 'ie':
  11. browser_driver = webdriver.Ie()
  12. elif browser == 'chrome':
  13. browser_driver = webdriver.Chrome()
  14. elif browser != 'ie' and browser != 'chrome':
  15. print("browser 参数非'ie 或 chrome'启动Fiefox")
  16. browser_driver = webdriver.Firefox()
  17.  
  18. browser_driver.get("http://www.baidu.com")
  19. browser_driver.find_element_by_id("kw").send_keys(word)
  20. browser_driver.find_element_by_id("su").click()
  21. time.sleep(3)
  22. browser_driver.quit()
  23.  
  24. if __name__ == '__main__':
  25. dicts = {'chrome':'__davieyang__','ie':'davieyang','davieyang':'davieyang__'}
  26. threads = []
  27. for browser, word in dicts.items():
  28. t = threading.Thread(target = test_search, args=(browser, word))
  29. threads.append(t)
  30. for t in range(len(dicts)):
  31. threads[t].start()
  32. for t in range(len(dicts)):
  33. threads[t].join()
  1. # -*- coding: utf-8 -*-
  2. from selenium import webdriver
  3. from time import sleep
  4. from time import ctime
  5. import multiprocessing
  6.  
  7. def start_browser(browser, time):
  8. if browser == "chrome":
  9. print("starting chrome browser now! %s" % ctime()) # 控制台打印当前时间
  10. chrome_driver = webdriver.Chrome()
  11. chrome_driver.get("http://www.baidu.com")
  12. sleep(time)
  13. chrome_driver.quit()
  14. elif browser == "firefox":
  15. print("starting firefox browser now! %s" % ctime()) # 控制台打印当前时间
  16. fire_driver = webdriver.Firefox()
  17. fire_driver.get("http://www.baidu.com")
  18. sleep(time)
  19. fire_driver.quit()
  20. else:
  21. print("starting ie browser now! %s" %ctime()) # 控制台打印当前时间
  22. ie_driver = webdriver.Ie()
  23. ie_driver.get("http://www.baidu.com")
  24. sleep(time)
  25. ie_driver.quit()
  26.  
  27. # 定义字典参数
  28. browser_dict = {"chrome": 3, "firefox": 4}
  29. # 定义空List用于存储进程
  30. start_browser_processing = []
  31. # 循环字典Key-Value,创建进程并加入到List中
  32. for browser, time in browser_dict.items():
  33. processing_browser = multiprocessing.Process(target = start_browser, args = (browser, time))
  34. start_browser_processing.append(processing_browser)
  35.  
  36. if __name__ == '__main__':
  37. for processing_browser in range(len(browser_dict)):
  38. start_browser_processing[processing_browser].start()
  39. for processing_browser in range(len(browser_dict)):
  40. start_browser_processing[processing_browser].join()
  41. 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. vue项目中导出Excel文件功能的前端代码实现

    在项目中遇到了两种不同情况, 1.get请求导出文件,实现起来相对简单 // 导出数据 exportData() { window.location.href = `/oes-content-mana ...

  2. 导航current背景

    ========================================简单一点的 var locationUrl = location.href.toLowerCase(); //导航cur ...

  3. vue {{}}的用法

    参考链接:https://blog.csdn.net/cofecode/article/details/78666233

  4. [学习笔记] Blender 常用工具栏,选择及游标

    Shift + A 创建物体 选择工具: 默认是框选 shift 鼠标左键 加选, 再次可减选 游标 默认情况下游标在世界中心.创建新物体时,会自动被创建在游标的位置.可以随意改变游标的位置,便于建模 ...

  5. 2019春《C语言程序设计》课程设计的安排

    课程设计的安排 课前准备: 要求同学们注册码云,并登陆: 要求组长加入由老师创建的一级组织:"2019春C语言": 要求组长建立二级组织,给自己的小组取个好听的名字,并邀请本组成员 ...

  6. Linux由于物理节点故障导致的异常重启-Case1

    问题描述:Linux VM异常重启,需要排查问题原因 排查结果: 查询Messages日志获取到的信息 虚拟机内核版本: Jun :: test01 kernel: Linux version -.e ...

  7. Python中datetime库的用法

    datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime ...

  8. spring cloud微服务实践一

    最近在学习spring框架.其中spring cloud在微服务方面很火,所以在学习过程中,也做一些记录. 注:这一个系列的开发环境版本为 java1.8, spring boot2.x, sprin ...

  9. vue中设置全局的css样式

    只需在main.js    ====import './style.less'   main.js =>>   import Vue from 'vue' import App from ...

  10. 06 ServletConfig、ServletContext_作用域对象

    ServletConfig:表示servlet的配置信息,一个servlet对象对应一个servletconfig对象   方法: 1.获取初始化参数 config.getInitParameter( ...