通过使用数据驱动测试的方法,可以在需要验证多组数据的测试场景中,使用外部数据源实现对输入值和期望值的参数化,从而避免在测试中仅使用硬编码的数据。将测试数据和测试脚本分离开,使得测试脚本在不同数据集合下高度复用。

使用方法

在测试类上使用@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的更多相关文章

  1. python for selenium 数据驱动测试

    # -*- coding:utf-8 -*- """ 数据驱动测试,从 csv 文件中读取数据 """ from selenium impo ...

  2. python - 数据驱动测试 - ddt

    # -*- coding:utf-8 -*- ''' @project: jiaxy @author: Jimmy @file: study_ddt.py @ide: PyCharm Communit ...

  3. Python&Selenium 数据驱动测试【unittest+ddt+xml】

    一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ...

  4. Selenium数据驱动测试模型和实例

    模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动的方式就不很适合了. 数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变. 装载数据的方式可以是列表. ...

  5. 如何快速掌握DDT数据驱动测试?

    1.前言 (网盗概念^-^)相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动.(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用 ...

  6. Python Selenium 之数据驱动测试

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

  7. Python+Selenium笔记(十二):数据驱动测试

    (一)   前言 通过使用数据驱动测试,实现对输入值和预期结果的参数化.(例如:输入数据和预期结果可以直接读取Excel文档的数据) (二)   ddt 使用ddt执行数据驱动测试,ddt库可以将测试 ...

  8. Python&Selenium 数据驱动【unittest+ddt+json】

    一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用json文件作为数据文件作为测试输入,最后生成html测试报告 二.json文件 [ ...

  9. Python Selenium 之数据驱动测试的实现

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

  10. 【python】以souhu邮箱为例学习DDT数据驱动测试

    前言 DDT(Data-Driven Tests)是针对 unittest 单元测试框架设计的扩展库.允许使用不同的测试数据来运行一个测试用例,并将其展示为多个测试用例.通俗理解为相同的测试脚本使用不 ...

随机推荐

  1. 安全漏洞之grafana-cve_2021_43798

    漏洞说明 一个可绕过用户登录进行任意文件读取的漏洞 环境搭建 我使用的是vulfocus提供的vulfocus/grafana-cve_2021_43798 ,由vulfocus后台统一管理 利用脚本 ...

  2. ModuleNotFoundError: No module named 'numpy.testing.nosetester'解决方法

    在import numpy的时候编译器提示这个问题. 问题的原因是numpy版本>1.18,而scipy的版本<=0.19 解决方案: 卸载当前版本scipy(0.19),安装更高版本sc ...

  3. TCP 协议之三次握手(一)

    (声明:本文是阅读此文的总结笔记) 面试中对于该知识点的考察频繁,一般作为面试的暖场问题,你能够答出多少,答得多深刻,条理多清晰,给面试官的印象真的很重要. 三次握手的过程 TCP是面向连接的,全双工 ...

  4. mysql清理库中所有表的数据

    SELECT CONCAT('truncate table ',TABLE_NAME,';') AS a FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHE ...

  5. pg_freespacemap查看表膨胀

    pg_freespacemap模块提供一种检查自由空间映射(FSM)的手段.它提供一个名为pg_freespace的函数,或精确的说是两个重载函数.该函数在一个给定的页面或关系中的所有页面的自由空间映 ...

  6. HCIP-ICT实战进阶04-ISIS原理与配置

    HCIP-ICT实战进阶04-ISIS原理与配置 0 前言 IS-IS(Intermediate System to Intermediate System, 中间系统到中间系统)协议, 和OSPF一 ...

  7. 数据库MYSQL常用命令

    下载安装命令 Sudo atp-get install xxxx 验证是否安装并启动成功 Sudo netstat -tap | grep xxx 启动 Sudo service mysql star ...

  8. 主要的原型设计工具 :Axure RP

    一. Axure RP简介: Axure RP 能帮助网站需求设计者,快捷而简便的创建基于网站构架图的带注释页面示意图.操作流程图.以及交互设计,并可自动生成用于演示的网页文件和规格文件,以提供演示与 ...

  9. PDF转置

    import pdfplumber #全是None with pdfplumber.open(r"C:\Users\yjiang3\Desktop\Inv.pdf") as pdf ...

  10. suse 关闭 图形界面

    图形界面 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target ln -s /usr/li ...