Python数据驱动DDT的应用

python ddt浅析 文章目录前言一、ddt简单介绍1.ddt是什么2.使用ddt的好处3.导入ddt模块4.四种模式二、ddt处理各种类型数据1.分析ddt工作原理2.ddt测试元祖数据2.1测试单组元素2.2测试多组未分解元素2.3测试多组分解元素3.ddt测试列表数据3.1多组未拆分数据3.2多组拆分数据3.3 复杂列表(含字典)未拆分数据3.4复杂列表(含字典)拆分4.ddt测试字典数据4.1多组数据未拆分4.2多组数据拆分5.ddt测试字典列表数据结合6.ddt测试外部数据总结 前言 在设计用例的时候,有些用例只是参 阅读详情

在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。

 

这说的是什么?为什么我完全不懂!!!咱们来分析一下。

利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程 – 重点在测试功能,不需要考虑内部处理过程

也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件 – 重点在测试时候的输入条件

在实际的自动化测试中,数据驱动是通过数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变,简单的来说,就是将测试数据与实际的测试代码区分开。

Python中大部分人最先接触的测试框架就是unittest,可是unittest本身并不支持数据驱动,需要借助ddt来实现。接着我们就用unittest+ddt来给大家看一下数据驱动。

ddt是 “Data-Driven Tests”的缩写。官方资料是:http://ddt.readthedocs.io/en/latest/ 。

 

安装ddt:

cmd,pip install ddt

 

 

下面是每个组件的简单介绍:

  • ddt.ddt:

装饰类,用于unittest.TestCase子类的类装饰器。

 

  • ddt.data:

添加到unittest.TestCase测试用例上的方法装饰器。

 

  • ddt.file_data(value):

添加到unittest.TestCase测试用例上的方法装饰器。

value应该是文件目录的路径。文件应该包含JSON编码的数据,可以是列表,也可以是dict。

 

如果文件中是列表,每个列表的值会作为测试用例参数,同时作为测试用例方法名后缀显示。

如果文件中是字典,字典的key会作为测试用例方法的后缀显示,字典的值会作为测试用例参数。

 

  • ddt.unpack:

传递的是复杂的数据结构时使用。比如使用元组或者列表,添加unpack之后,ddt会自动把元组或者列表对应到多个参数上。

 

我们来用实例感受一下每个组件,先用data来传入比较简单的值,来做数据驱动。

简单数据注入:

import ddt

import unittest

 

@ddt.ddt

class TestCase(unittest.TestCase):

   def setUp(self):

       print("Before every test case!")

 

 

   @ddt.data(1,2,3,4,5,6)

   def test_case_01(self,value):

       print("value is: "+ str(value))

 

 

if __name__ == "__main__":

unittest.main()        

运行中发现,有6组数据,一共执行了6次

测试方法后会被ddt加一个后缀,ddt会尝试把测试数据转化为后缀附在测试方法后,组成一个新的名字。

复杂数据注入:

如果尝试着用一些比较复杂的数据,比如元组/列表/字典,我们就需要调用unpack来实现,下面是一些例子

   import ddt

import unittest

 

@ddt.ddt

class TestCase(unittest.TestCase):

   def setUp(self):

       print("Before every test case!")

 

   @ddt.unpack

   @ddt.data({'value1': '孙俪', 'value2': '邓超'},

               {'value1': '蔡少芬', 'value2': '张晋'},

               {'value1': '袁咏仪', 'value2': '张智霖'})

   def test_case_01(self,value1,value2):

       print("value1 is: " + value1)

       print("value2 is: " + value2)

 

   @ddt.unpack

   @ddt.data((1,2),(3,4),(5,6))

   def test_case_02(self, value1, value2):

       print("value1 is: " + str(value1))

       print("value2 is: " + str(value2))

 

   @ddt.unpack

   @ddt.data([1,9],[2,8],[3,7])

   def test_case_03(self, value1, value2):

       sum = value1 + value2

       self.assertEqual(sum, 10)

 

 

 

if __name__ == "__main__":

   unittest.main()

 

 

现在也有一种比较流行的处理方式,不借助unpack可以直接做字典数据的注入。

import ddt

import unittest

 

data = ({'value1': '孙俪', 'value2': '邓超'},

               {'value1': '蔡少芬', 'value2': '张晋'},

               {'value1': '袁咏仪', 'value2': '张智霖'})

 

@ddt.ddt

class TestCase(unittest.TestCase):

   def setUp(self):

       print("Before every test case!")

 

 

   @ddt.data(*data)

   def test_case_01(self,data):

       print("value1 is: " + data['value1'])

       print("value2 is: " + data['value2'])

 

 

 

 

if __name__ == "__main__":

unittest.main()

 

      文件数据注入:

有时候,将测试数据直接写到Python文件里不利于我们对数据的管理,这时候,我们就可以借助文件来做数据的注入。

创建一个yml文件:

- 1
- 2
- 3
- 4

 

创建一个json文件:

{
   "positive_integer_range": {
       "start": 0,
       "end": 2,
       "value": 1
   },
   "negative_integer_range": {
       "start": -2,
       "end": 0,
       "value": -1
   },
   "positive_real_range": {
       "start": 0.0,
       "end": 1.0,
       "value": 0.5
   },
   "negative_real_range": {
       "start": -1.0,
       "end": 0.0,
       "value": -0.5
   }
}

 

 

然后将yml与json文件注入测试用例中

import ddt

import unittest

 

@ddt.ddt

class TestCase(unittest.TestCase):

   def setUp(self):

       print("Before every test case!")

 

 

   @ddt.file_data('testdata_dic.json')

   def test_case_01(self,start,end,value):

       print("start is: " + str(start))

       print("end is: " + str(end))

       print("value is: " + str(value))

 

   @ddt.file_data('testdata_list.yml')

   def test_case_02(self, value):

       print("value is: " + str(value))

 

 

 

if __name__ == "__main__":

unittest.main()

 

运行之后结果为:

 

这样,就为我们数据驱动的用法提供了多样性。

最后,希望本文能帮助到大家。

python数据驱动:基于ddt的数据驱动测试 方法一: from selenium import webdriver import unittest from time import sleep from ddt import ddt,data,unpack @ddt class Unitdemo(unittest.TestCase): ''' @data(["http://www.baidu.com","虚竹"]) 解析操作,基于都好进行分割,但因为list作为一个整体,就作为一个参数传入 @unpack进行二次解析 阅读详情

相关推荐

Moveit Servo学习

MoveIt Servo功能与配置指南 摘要:本文介绍了MoveIt Servo的功能特性,包括支持关节速度、末端执行器速度和位置控制,以及安全功能如奇点检查、碰撞检测等。通过示例展示了如何运行伺服控制demo,详细解析了关键节点和话题。最后以睿尔曼rml_63机器人为例,讲解了如何自定义伺服配置文件,包括环境设置、输入输出参数配置、平滑滤波器和规划场景监控等关键配置项。文章提供了从基础使用到自定义机器人配置的完整指导,帮助开发者实现高效的实时运动控制。

Fisher的博客 1173

DDT数据驱动

1、ddt是什么ddt(Data Driver Tests)数据驱动测试。

weixin_45184301的博客 4909

Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

导语 "慢品人间烟火色 闲观人间岁月长" ———致自己​​​ ​ ???? 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。 ​ 星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟 花下,想必木木子????不用说大家也知道叭~​​ 今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛? ​正文 “每一句文案,都有一个故事,你仔细听” ​ 1)环境安装???? 准备好:.

顾木子吖的博客 5万+

【python学习总结7】python的ddt数据驱动

数据驱动ddt可以实现测试数据与测试脚本的分离,通过ddt来将测试数据加载到脚本中。采用数据驱动设计模式使一组数据对应一个测试用例,通过数据的改变从而驱动自动化测试的执行。既能减少代码量,也能降低代码的维护成本。

优快云_mayan的博客 3409

国内用户稳定开通ChatGPT Plus会员的完整实操指南

ChatGPT作为当前最先进的AI对话模型,其技术原理基于Transformer架构和大规模语言预训练。通过深度学习技术,ChatGPT能够理解自然语言并生成高质量回复,在代码生成、文档分析等场景具有重要技术价值。对于需要高频使用的开发者而言,ChatGPT Plus会员提供了优先访问权和GPT-4模型支持等核心功能。在实际应用场景中,国内用户常面临支付限制和区域封锁等挑战。本文针对这些痛点,重点解析如何通过可靠的支付渠道和账号安全策略,实现稳定的会员开通方案,帮助用户突破技术使用壁垒,充分发挥AI助手在开

weixin_29042035的博客 954

非凸问题的求解方法以及连续凸逼近SCA(Successive Convex Approximation)方法

非凸问题的求解方法 针对形如下式的函数: min⁡x∈XV(x)=F(x)+G(x)\min\limits_{{\bf{x}}\in X} V(x)=F(x)+G(x)x∈Xmin​V(x)=F(x)+G(x); 其中F为光滑的(不一定convex),G是convex的但是可能不可微,且存在:对于n维实矢量空间,有X=X1×...×XNX=X_1 \times...\times X_NX=X1​×...×XN​; x=(x1,...,xN)\bf{x} =(x_1,...,x_N)x=(x1​,...,xN

weixin_44535200的博客 2万+

python—unittest—数据驱动详细讲解(ddt)

数据驱动ddt 数据驱动ddt可以实现测试数据与测试脚本的分离,通过ddt来将测试数据加载到脚本中。采用数据驱动设计模式使一组数据对应一个测试用例,用例自动加载生成 ddt基础 pip install ddt 测试数据为嵌套字典的列表 测试类前加修饰@ddt 测试用例前加修饰@data() 运行后用例会自动加载成多个单独的用例 代码案例 import unittest from ddt import ddt, data #测试用例 cases = [ {'title': '登录成功',

python全栈 3873

ElectrolyteGPT:首个电池电解液逆向设计的生成式 AI 系统 —— 算法原理与复现解析

数据驱动的重要性:1100 万→100 万的精心筛选,比单纯增大模型更有效领域适配:fLine 表示法、正则分词、化学感知的数据增强(SMILES randomization)都是关键小模型的力量:6M 参数在特定化学空间的表现,远超通用大模型在相同任务上的零样本能力条件生成的极限:10 维条件导致模型崩溃,提示我们需要更好的条件编码策略(如 diffusion guidance、RLHF-style 偏好优化)未来方向配方实验验证。

ASKCOS博客 123

数字密码锁设计(利用数字逻辑电路的电子密码锁)

本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安 工作,有极高的安全系数 文件:n459.com/file/25127180-478524577 以下内容无关: -------------------------------------------分割线--------------------------------------------- ​ DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试

gumenghua_com1的博客 6337

【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试

  人的前程关于眼界、关乎格局。   志之所趋,无远弗届,穷山复海不能限也;   志之所向,无坚不入,锐兵精甲不能御也。 一、I2C驱动框架简介   Linux内核将 I2C 驱动分为两部分: ①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 ②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 1....

悟已往之不谏 知来者之可追 1068

AI问数,智慧赋能:基于大语言模型的数据播报员应用实践探索

AI问数技术正在改变企业与数据交互的方式,它以自然语言为桥梁,让数据不再是少数专家的专利,而是成为所有业务人员的决策伙伴。这不仅是技术的创新,更是管理理念的革新。在数字化转型的关键阶段,企业应积极拥抱AI问数技术,通过降低数据使用门槛、提升数据利用效率、释放数据潜在价值,实现真正的数据驱动决策,为企业的高质量发展注入源源不断的智慧动能。AI问数,正在开启一个数据普惠的新时代。

getusushu的博客 64

ddt数据驱动 python_Python数据驱动DDT的应用

在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。这说的是什么?为什么...

weixin_39928106的博客 152

LPDDR5 学习笔记02:上电初始化与下电时序

LPDDR5上电初始化流程需严格遵守时序要求:首先确保电源按顺序上电(VDD1→VDD2H→VDD2L→VDDQ),RESET_n保持低电平至电压稳定。初始化包含自动ZQ校准、命令总线训练(CBT)、WCK2CK电平校准和DQ总线训练四个关键阶段,需完成全部训练后才能正常操作。在双电源轨系统中,须在CBT前设置MR13寄存器。复位操作需保持RESET_n低电平至少tPW_RESET时间,断电时要求CS保持低电平且电源电压有序下降。非受控下电时电压斜率需低于0.5V/μs,器件生命周期内不得超过400次非受控

一只豌豆象的博客 2041

python ddt mysql_Python数据驱动DDT的应用

原标题:Python数据驱动DDT的应用在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有...

weixin_28331555的博客 90

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python中什么是数据驱动_Python数据驱动DDT的应用

原标题:Python数据驱动DDT的应用在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有...

weixin_39645165的博客 261

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python数据驱动ddt_Python数据驱动DDT的应用

在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。这说的是什么?为什么...

weixin_39583623的博客 91

Python数据驱动DDT的应用(一)

Python数据驱动DDT的应用 、DDT

weixin_43641920的博客 1327

python 数据驱动接口自动化框架_Python 语言下数据驱动DDT的应用

数据驱动测试的含义:在百度百科上的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。在微软网站上的解释是:数据驱动的单元测试是为数据源中...

weixin_39744240的博客 96

python数据驱动创建账号_Python数据驱动DDT的应用

在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。这说的是什么?为什么...

weixin_39655993的博客 86

Python 语言下数据驱动DDT的应用

数据驱动测试的含义: 在百度百科上的解释是: 数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。 在微软网站上的解释是:数据驱动的单元测试是为数据源中的每一行重复运行的一种单元测试。 数据驱动的单元测试的常用情况是使用多个输入值测试 API。不是编写调

lucylily11的博客 192

python语言百度百科-Python 语言下数据驱动DDT的应用

数据驱动测试的含义:在百度百科上的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。在微软网站上的解释是:数据驱动的单元测试是为数据源中...

weixin_37988176的博客 375

DDT数据驱动测试

DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避免在测试中使用硬编码的数据,也就是测试数据和用例脚本代码分离。​ DDT它其实就是一个装饰器,它会根据你传递进来的数据来决定要生成几个测试用例。🎈使用的意义1.代码复用率高:一个测试逻辑只需要写一次,可以多条测试数据复用,同时提高测试脚本的编写效率。

okcross0的博客 853

python自动化学习笔记10-数据驱动DDT与yml的应用

在测试工作中,针对某一API接口,或者某一个用户界面的输入框,需要设计大量相关的用例,每一个用例包含实际输入的各种可能的数据。通常的做法是,将测试数据存放到一个数据文件里,然后从数据文件读取,在脚本中循环输入测试数据,并对结果进行验证。我们用Python的unittest+DDT结合的方式; DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从jso...

weixin_30553777的博客 224
上一篇: Jmeter---响应中中文没有解析
下一篇: 彻底理解cookie,session,token的区别
java2013liu
博客等级 码龄14年 141粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值