Selenium3自动化测试——21.数据驱动应用
往往我们需要通过数据集合直接驱动应用,这里通过循序渐进的三种方式来描述。
1. 通过csv获取数据并驱动应用
baidu_data.csv文件如下:
name,search_key
case1,selenium
case2,unittest
case3,parameterized
test1_baidu_data.py文件如下:
import csv
import codecs
import unittest
from time import sleep
from itertools import islice
from selenium import webdriverclass TestBaidu(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.base_url = "https://www.baidu.com"@classmethoddef tearDownClass(cls):cls.driver.quit()def baidu_search(self, search_key):self.driver.get(self.base_url)self.driver.find_element_by_id("kw").send_keys(search_key)self.driver.find_element_by_id("su").click()sleep(3)def test_search(self):with codecs.open('baidu_data.csv', 'r', 'utf_8_sig') as f:data = csv.reader(f)for line in islice(data, 1, None):search_key = line[1]self.baidu_search(search_key)if __name__ == '__main__':unittest.main(verbosity=2)
结果:打开百度浏览器后,依次输入关键字selenium,unittest,parameterized,依次得到三个搜索界面。
缺点:如果有一个数据没有获取到就会影响后续数据的解析。
2.将数据获取后存储到数组中,再创建不同测试方法使用数据
import csv
import codecs
import unittest
from time import sleep
from itertools import islice
from selenium import webdriverclass TestBaidu(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.base_url = "https://www.baidu.com"cls.test_data = []with codecs.open('baidu_data.csv', 'r', 'utf_8_sig') as f:data = csv.reader(f)for line in islice(data, 1, None):cls.test_data.append(line)@classmethoddef tearDownClass(cls):cls.driver.quit()def baidu_search(self, search_key):self.driver.get(self.base_url)self.driver.find_element_by_id("kw").send_keys(search_key)self.driver.find_element_by_id("su").click()sleep(3)def test_search_selenium(self):self.baidu_search(self.test_data[0][1])def test_search_unittest(self):self.baidu_search(self.test_data[1][1])def test_search_parameterized(self):self.baidu_search(self.test_data[2][1])if __name__ == '__main__':unittest.main(verbosity=2)
结果:先测试parameterized--selenium--unittest
3. 使用Parameterized实现参数化
1)安装parameterized
pip install parameterized
2)实现百度搜索的测试
import unittest
from time import sleep
from itertools import islice
from selenium import webdriver
from parameterized import parameterizedclass TestBaidu(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.base_url = "https://www.baidu.com"@classmethoddef tearDownClass(cls):cls.driver.quit()def baidu_search(self, search_key):self.driver.get(self.base_url)self.driver.find_element_by_id("kw").send_keys(search_key)self.driver.find_element_by_id("su").click()sleep(2)# 通过Parameterized实现参数化,case1--定义测试用例的名称,selenium--定义搜索的关键字@parameterized.expand([("case1", "selenium"),("case2", "unittest"),("case3", "parameterized"),])def test_search(self, name, search_key):self.baidu_search(search_key)self.assertEqual(self.driver.title, search_key + "_百度搜索")if __name__ == '__main__':#执行更详细的执行日志unittest.main(verbosity=2)
步骤1)导入Parameterized
2)通过@parameterized.expand()装饰测试用例
3)使用unittest的main方法,设置verbosity参数为2,输出更详细的执行日志。
得到的结果如下:
通过@parameterized.expand()中元组的个数来统计测试用例数,产生3条测试用例。
Selenium3自动化测试——21.数据驱动应用相关推荐
- Selenium3自动化测试【21】find_element定位元素
前面连载的内容,我们介绍了如下8种定位元素的方法. find_element_by_id:通过元素的ID属性值来定位元素: find_element_by_name:通过元素的name属性值来定位元素 ...
- python3 selenium_Python3+Selenium3自动化测试-(准备)
Python3+Selenium3自动化测试-(准备) 最近在学习selenium自动化测试相关的内容,所以将实际准备情况做一记录, # 系统:win10(64位) # 浏览器:Chrome(67.0 ...
- 自动化测试和数据驱动之间的关系,十分钟带你弄清楚
软件测试是对项目研发过程的产物(文档,代码等)进行审查,保障产品质量的过程.我们可以通过手工测试,自动化测试,工具扫描等方法完成这个任务.其中,自动化测试是当前重要的一种测试方法,具有响应速度快.稳定 ...
- Selenium3自动化测试【35】执行JS脚本(2)
1.引言 当单击某链接时,单击的链接有时不是在原标签页上实现跳转,而是新打开一个标签页.如何实现在多个窗口间进行切换呢? 现在很多网站开发都在使用HTML5,如何利用Selenium处理常用的HTML ...
- Python3+Selenium3自动化测试框架——②流程梳理及代码封装
Python3+Selenium3自动化测试框架--①基本步骤 对之前的步骤进行 一.流程梳理以及功能封装 register_code.py # coding=utf-8 import json im ...
- 基于python的界面自动化测试-基于python的接口自动化测试+ddt数据驱动
在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ...
- 【Web自动化测试——代码篇十二】自动化测试模型——数据驱动测试和关键字驱动测试...
自动化测试模型可以看作自动化测试框架与工具设计的思想.随着自动化测试技术的发展,演化为以下几种模型: 线性测试 模块化驱动侧式 数据驱动测试 关键字驱动测试 数据驱动测试 前一篇所讲的模块化驱动测试能 ...
- 自动化测试框架-数据驱动(1)
1.数据驱动概述 相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,这样的测试脚本设计模式称为数据驱动. 例如:测试网站的登录功能,自动化测试工程师想验证不同的用户名和密码在网站登录 ...
- python自动化测试实战 虫师_关于《Selenium3自动化测试实战--基于python语言》
2016年1月,机缘巧合下我出版了<Selenium2自动化测试实战--基于python语言>这本书,当时写书的原因是,大部分讲Selenium的书并不讲编程语言和单元测试框,如果想在项目 ...
最新文章
- 大连理工计算机专业导师,大连理工大学计算机科学与技术学院研究生导师简介-申彦明...
- 使用Ant实现打包jar包上传到服务器
- CSS元素高度塌陷的几种常见解决办法!
- Android----Google code android开源项目(四)
- 【开源项目】基于FFmpeg的封装格式转换
- Spring MVC实现Junit Case
- 终于搞懂了网红主播的套路
- paip.提升用户检验-----列表摘要
- c语言程序设计自考真题,自学考试《C语言程序设计》随堂试题及答案
- [译] iOS 11:机器学习人人有份
- 斗鱼实名认证 mysql_我告诉你斗鱼实名认证怎么取消
- 基于arduino WS2812b RGB灯带控制程序一
- 设置cookie存活时间_Cookie所有知识点
- GAMES101-现代计算机图形学入门
- 【基于ARM cortex-A53的音视频】
- 别让你20多岁的活法,毁掉你30岁后的人生
- Python 笑脸抓拍
- 加拿大移民政策利好,哪些人适合移民加拿大
- fatal error: zlib.h: No such file or directory
- 区块链学习:区块链分类
热门文章
- SpringMVC:如何保证Controller的并发安全
- Spring Boot 2.x基础教程:事务管理入门
- 使用 LocalDateTime 而不是 Date
- Java 8 Stream Api 中的 skip 和 limit 操作
- 我说分布式事务之最大努力通知型事务
- 永久代内存java_Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- 我对软件设计原则的理解
- c++调用python返回字典
- OpenglES2.0 Android:画矩形
- dlib 68个关键点 人脸姿态