selenium--- 数据驱动测试 ddt
通过使用数据驱动测试的方法,可以在需要验证多组数据的测试场景中,使用外部数据源实现对输入值和期望值的参数化,从而避免在测试中仅使用硬编码的数据。将测试数据和测试脚本分离开,使得测试脚本在不同数据集合下高度复用。
使用方法
在测试类上使用@ddt装饰符, 在测试方法上使用@data装饰符。 @data装饰符把参数当作测试数据,参数可以是单个值、列表、元组、字典。对于列表,需要用@unpack装饰符把元组和列表解析成多个参数。
@ddt.data(("phones",2),("music",5))
@unpack
def test_search(self,search_value,expected_count):
使用外部数据的数据驱动测试
1.通过CSV获取数据

import csv,unittest
from ddt import ddt,data,unpack
from selenium import webdriver def get_data(file_name):
rows =[]
data_file = open(file_name,"rb")
reader = csv.reader(data_file)
#skip the headers
next(reader,None)
for row in reader:
rows.append(row)
return rows @ddt
class SearchCsvDDT(unittest.TestCase):
.......
#get the data from specified csv file by calling the get_data function
@data(*get_data("testdata.csv"))
@unpack
def test_search(self,search_value,expected_count):
...........
2.通过excel获取数据

import xlrd,unittest
from ddt import ddt,data,unpack
from selenium import webdriver def get_data(file_name):
rows =[]
book = xlrd.open_workbook(file_name)
sheet = book.sheet_by_index(0)
for row_idx in range(1,sheet.nrows):
rows.append(sheet.row_values(row_idx,0,sheet.ncols))
return rows @ddt
class SearchExcelDDT(unittest.TestCase):
.......
#get the data from specified excel file by calling the get_data function
@data(*get_data("testdata.csv"))
@unpack
def test_search(self,search_value,expected_count):
...........
@data将调用get_data()方法去读取外部Excel文件,并将数据逐行返回给@data
如果要从数据库中获取数据,也可以修改get_data()方法,通过DB相关的库来连接数据库、SQL查询来获取测试数据
selenium--- 数据驱动测试 ddt的更多相关文章
- python for selenium 数据驱动测试
# -*- coding:utf-8 -*- """ 数据驱动测试,从 csv 文件中读取数据 """ from selenium impo ...
- python - 数据驱动测试 - ddt
# -*- coding:utf-8 -*- ''' @project: jiaxy @author: Jimmy @file: study_ddt.py @ide: PyCharm Communit ...
- Python&Selenium 数据驱动测试【unittest+ddt+xml】
一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ...
- Selenium数据驱动测试模型和实例
模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动的方式就不很适合了. 数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变. 装载数据的方式可以是列表. ...
- 如何快速掌握DDT数据驱动测试?
1.前言 (网盗概念^-^)相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动.(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用 ...
- Python Selenium 之数据驱动测试
数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...
- Python+Selenium笔记(十二):数据驱动测试
(一) 前言 通过使用数据驱动测试,实现对输入值和预期结果的参数化.(例如:输入数据和预期结果可以直接读取Excel文档的数据) (二) ddt 使用ddt执行数据驱动测试,ddt库可以将测试 ...
- Python&Selenium 数据驱动【unittest+ddt+json】
一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用json文件作为数据文件作为测试输入,最后生成html测试报告 二.json文件 [ ...
- Python Selenium 之数据驱动测试的实现
数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...
- 【python】以souhu邮箱为例学习DDT数据驱动测试
前言 DDT(Data-Driven Tests)是针对 unittest 单元测试框架设计的扩展库.允许使用不同的测试数据来运行一个测试用例,并将其展示为多个测试用例.通俗理解为相同的测试脚本使用不 ...
随机推荐
- unity shader ide
Shader Languages support for vs Code https://marketplace.visualstudio.com/items?itemName=slevesque.s ...
- Vue的v-html指令说明,含案例
v-html指令总结: 1.作用:向指定节点中渲染包含html结构的内容 2.与插值语法的区别: (1)v-html 会替换掉节点中所有的内容,{{}}则不会 (2)v-html 可以识别html 结 ...
- 样本方差S²中为什么是乘以1/(n-1)或者说除以n-1?贝塞尔校正,无偏估计
样本方差S²中为什么是乘以1/(n-1)或者说除以n-1?贝塞尔校正,无偏估计 前言:重在记录,可能出错. 先看样本方差的公式如下: S2=1n-1∑i=1n(Xi-X¯)2=1n-1(∑i=1nXi ...
- string字符串类型的属性及各种方法
C# 字符串(String) 在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量.string 关键字是 System.String 类的 ...
- JS篇(004)-js 是一门怎样的语言,它有什么特点?
答案: 1.脚本语言.JavaScript 是一种解释型的脚本语言,C.C++等语言先编译后执行,而 JavaScript 是在程序的运行过程中逐行进行解释. 2.基于对象.JavaScript 是一 ...
- python ElementTree 节点标签修改
在网上能找到很多关于xml库ElementTree的增删改查用法,这里我就不重复写那么多了. 主要记录一个,不是很容易查到的用法,比如一个标签,<name></name>,我需 ...
- Taro 弹窗阻止小程序滑动穿透(亲测有效) tabbar数据缓存不更新 入口场景值不同
v3.0 推出后反馈最多的问题之一,就是在 touchmove 事件回调中调用 e.stopPropagation() 并不能阻止滑动穿透. 这是因为 Taro 3 的事件冒泡机制是单独在小程序逻辑层 ...
- FFmpeg 命令行
FFmpeg命令行帮助 #>ffmpeg -h #>ffmpeg -h long #>ffmpeg -h full 将视频按照指定的宽高输出 #>ffmpeg -i input ...
- nginx 工作流程
NGINX 把http请求处理流程划分为11个阶段,逻辑细分,以模块为单位进行处理.各个阶段可以包含多个http模块,每个阶段以流水线的形式处理请求.这样的分层处理模式与计算机网络的7层模式类似,每个 ...
- 保护IIS Web服务器安全的技巧
首先,开发一套安全策略 保护Web服务器的第一步是确保网络管理员清楚安全策略中的每一项制度.如果公司高层没有把服务器的安全看作是必须被保护的资产,那么保护工作是完全没有意义的.这项工作需要长期的努力. ...