利用参数化连续打开网页:

#encoding=utf-8
import unittest
import paramunittest
import time
from selenium import webdriver

@paramunittest.parametrized(
  {"url":"http://www.baidu.com","result": "百度"},
  {"url":"http://www.sina.com","result": "新浪"},
  {"url":"http://www.taobao.com","result": "淘宝"},
)

class TestDemo(unittest.TestCase):
  def setParameters(self, url, result):
    self.url = url
    self.result = result

  def test_login(self):
    self.driver=webdriver.Firefox()
    self.driver.get(self.url)
    print("开始执行用例:--------------")
    time.sleep(0.5)
    print("期望结果:%s " % self.result)

if __name__ == "__main__":
unittest.main(verbosity=2)

为了看结果特意没关浏览器:

一些新的想法,由于每次都需要等一个参数运行完之后才能运行下一个,导致如果一个网站比如新浪,访问时间很长,则下面的淘宝就需要等待,很浪费时间,于是做了个多线程:

#encoding=utf-8
import unittest
import paramunittest
import time
from selenium import webdriver

@paramunittest.parametrized(
  {"url":"http://www.baidu.com","result": "百度"},
  {"url":"http://www.sina.com","result": "新浪"},
  {"url":"http://www.taobao.com","result": "淘宝"},
)

class TestDemo(unittest.TestCase):
  def setParameters(self, url, result):
    self.url = url
    self.result = result

  def test_login(self):
    self.driver=webdriver.Firefox()

    t = threading.Thread(target=self.driver.get, args=(self.url,))

    t.start()

    self.driver.get(self.url)
    print("开始执行用例:--------------")
    time.sleep(0.5)
    print("期望结果:%s " % self.result)

if __name__ == "__main__":
unittest.main(verbosity=2)

运行结果变成了6.729,比之前的92.458真的是。。。快了不少啊

补充内容:

上面写的内容确实能提高脚本运行速度,但是因为脚本比较简单,只有登录这步操作,如果是比较复杂的步骤单单一步多线程反而会使得之后的动作fail,下面是学习到的是可以完整执行多个操作的用例,并使得多个这种用例进行并发操作,但是这种方式还无法融合unittest和paramunittest,回报类的错误,当然可以利用HTMLTestRunner来将用例放在多个,py文件然后多线程批量运行

#encoding=utf-8

from threading import Thread
from selenium import webdriver
from time import ctime, sleep

def test_baidu(browser, search):
  print('start:%s' % ctime())
  print('browser:%s,' % browser)

if browser == "ie":
  driver = webdriver.Firefox()#Ie()
elif browser == "chrome":
  driver = webdriver.Firefox()#Chrome()
elif browser == "ff":
  driver = webdriver.Firefox()
else:
  print("browser参数有误,只能为ie,ff,chrome")

driver.get('http://www.baidu.com')
driver.find_element_by_id("kw").send_keys(search)
driver.find_element_by_id("su").click()
sleep(2)
#driver.quit()

if __name__ == '__main__':
lists = {'ie': 'threading', 'chrome': 'driver', 'ff': 'python'}
threads = []
files = range(len(lists))
for brow, sea in lists.items():
  t = Thread(target=test_baidu, args=(brow, sea))
  threads.append(t)
for t in files:
  threads[t].start()

for t in files:
  threads[t].join()

print('end:%s' % ctime())

有一点需要注意,就是判断时一定要用elif,否则由于多线程过快,导致会直接跳到else将其内容print出来如下:

selenium,unittest——参数化url,并多线程加快脚本运行速度的更多相关文章

  1. python+selenium+unittest,爬虫电影网站

    以前经常在这个网站上下载电影下来看,这个网站比较坑的就是,主页上只有电影的名称,但是评分是看不到的:只有再点击电影名字,进入电影主页时才能看到评分.一般下载的电影都是评分高的才看,低的就忽略掉了.每次 ...

  2. Selenium & Webdriver 远程测试和多线程并发测试

    Selenium & Webdriver 远程测试和多线程并发测试 Selenium Webdriver自动化测试,初学者可以使用selenium ide录制脚本,然后生成java程序导入ec ...

  3. Python+selenium+unittest+HTMLTestReportCN单元测试框架分享

    分享一个比较基础的,系统性的知识点.Python+selenium+unittest+HTMLTestReportCN单元测试框架分享 Unittest简介 unittest是Python语言的单元测 ...

  4. Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构

    1.Business:公共业务模块,如登录模块,可以把登录模块进行封装供调用 ------login_business.py from Page_Object.Common_Page.login_pa ...

  5. Selenium 进行参数化

    Selenium参数化分为大小: 小:list.dict.函数 大:txt.excel.mysql.redis 哪种方式使自己的工作简单高效就选那种!!! Selenium进行参数化有多种形式: 本文 ...

  6. Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发接口化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLRe ...

  7. python3 应用 nose_parameterized 实现unittest 参数化

    一.读取变量的值,实现unittest 参数化 import nose_parameterized,unittest def calc(a:int,b:int): return a+b case_da ...

  8. python自动化测试学习笔记-unittest参数化

    做接口测试的时候,当一个参数需要输入多个值的时候,就可以使用参数来实现: python中unittest单元测试,可以使用nose_parameterized来实现: 首先需要安装:pip  inst ...

  9. 如何实现shell并发 一个入门级可控多线程shell脚本方案

     如何实现shell并发      很多人都问我如何写shell脚本,如何实现同时给三台ftp服务器上传文件,如何同时检测三台服务器是否alive等,其实这就是想实现shell的并发.那么shell并 ...

随机推荐

  1. 强类型 和弱类型 c#

    强类型的意思是,在编译的时候,已经确定类型了. 弱类型的意思是,在运行的时候,才确定类型

  2. h5做的app和原生app的区别

    之所以说h5做的app和原生app的区别,是因为一位博友的问题: 随着 h5 的普及,是不是不再需要开发 app ? 我的回答是要分业务需求,分场合而定. 比如现在的微信小程序这么流行,甚至也取代了不 ...

  3. localtunnel内网服务器暴露至公网

    摘自@scarlex   1.安装 npm install -g localtunnel 2.运行 lt --port 8080  (your url is: http://xxxx.localtun ...

  4. Hbuilder连接安卓模拟器,调试app

    本人用的是夜神模拟器,所以下面的命令也是基于夜神的,其他模拟器请自行百度. 1.首先,启动HBuilder和夜神模拟器 然后打开cmd命令提示符 cd进入夜神模拟器bin目录 执行以下命令 nox_a ...

  5. 常用Sql server 自定义函数

    /****** 对象: UserDefinedFunction [dbo].[fun_get_LowerFirst] 脚本日期: 08/04/2012 13:03:56 ******/ IF EXIS ...

  6. MySQL数据导入导出(一)

    今天遇到一个需求,要用自动任务将一张表的数据导入另一张表.具体场景及限制:将数据库A中表A的数据导入到数据库B的表B中(增量数据或全量数据两种方式):体系1和体系2只能分别访问数据库A和数据库B.附图 ...

  7. 生产环境MySQL数据库集群MHA上线实施方案

    生产环境MySQL数据库集群MHA上线实施方案 一.不停库操作 1.在所有节点安装MHAnode所需的perl模块(需要有安装epel源) yum install perl-DBD-MySQL -y ...

  8. 纯JS实现轮播图特效——详解

    <div id="slider"> <div id="sliderImgs"> <img src="img/mi04.j ...

  9. 纯JS实现前端动态分页码

    思路分析:有3种情况 第一种情况,当前页面curPage < 4 第二种情况,当前页面curPage == 4 第三种情况,当前页面curPage>4 此外,还要考虑,当前页码 curPa ...

  10. CentOS7 宝塔搭配git 实时更新项目源码

    上一篇文章 介绍了如何在CentOS7上 搭建GIT环境 详见链接:https://www.cnblogs.com/mverting/p/10206532.html 本章主要介绍git如何和wdcp搭 ...