DDT简单介绍

名称:Data-Driven Tests,数据驱动测试

作用:由外部数据集合来驱动测试用例的执行

核心的思想:数据和测试代码分离

应用场景:一组外部数据来执行相同的操作

优点:当测试数据发生大量变化的情况下,测试代码可以保持不变

实际项目:excel存储测试数据,ddt读取测试数据到单元测试框架(测试用例中),输出到html报告

什么是数据驱动

就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说的直白些,就是参数化的应用

DDT基础使用(一):传递基础数据类型

#导入ddt库下所有内容

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):#int

@data(1, 2, 3, 4)deftest_int(self, i):print("test_int:", i)#str

@data("1", "2", "3")deftest_str(self, str):print("test_str:", str)

测试结果

test_int: 1test_int:2test_int:3test_int:4test_str:1test_str:2test_str:3

包含知识点

想使用DDT首先要在单元测试类上面加上 @ddt

DDT基础使用(二):传递一个复杂的数据结构

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):

tuples= ((1, 2, 3), (1, 2, 3))

lists= [[1, 2, 3], [1, 2, 3]]#元组

@data((1, 2, 3), (1, 2, 3))deftest_tuple(self, n):print("test_tuple", n)#列表

@data([1, 2, 3], [1, 2, 3])

@unpackdeftest_list(self, n1, n2, n3):print("test_list", n1, n2, n3)#元组2

@data(*tuples)deftest_tuples(self, n):print("test_tuples", n)#列表2

@data(*lists)

@unpackdeftest_lists(self, n1, n2, n3):print("test_lists", n1, n2, n3)#字典

@data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})

@unpackdeftest_dict(self, value1, value2):print("test_dict", value1, value2)

测试结果

test_dict 1 2test_dict1 2test_list1 2 3test_list1 2 3test_lists1 2 3test_lists1 2 3test_tuple (1, 2, 3)

test_tuple (1, 2, 3)

test_tuples (1, 2, 3)

test_tuples (1, 2, 3)

包含知识点

@unpack :当传递的是复杂的数据结构时使用。比如使用元组或者列表,添加 @unpack 之后, ddt 会自动把元组或者列表对应到多个参数上。字典也可以这样处理

当没有加unpack时,test_case方法的参数只能填一个;如元组的例子

当你加了unpack时,传递的数据量需要一致;如列表例子中,每个列表我都固定传了三个数据,当你多传或少传时会报错,而test_case方法的参数也要写三个,需要匹配上

当传的数据是字典类型时,要注意每个字典的key都要一致,test_case的参数的命名也要一致;如字典的例子,两个字典的key都是value1和value2,而方法的参数也是

当传的数据是通过变量的方式,如元组2、列表2,变量前需要加上*

DDT基础使用(三):传递json文件

json文件

{"first": [

{"isRememberMe": "True","password": "111111","username": "root"},"200"],"second": ["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}","406"],"third": [1,2],"four": "123123"}

单元测试类

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):

@file_data('F:/test/config/testddt.json')deftest_json(self, data):print(data)

测试结果

[{'isRememberMe': 'True', 'password': '111111', 'username': 'root'}, '200']

["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}", '406']

[1, 2, 3, 4]123123

DDT基础使用(四):传递Yaml文件

yaml文件

unsorted_list:- 10

- 15

- 12sorted_list: [15, 12, 50 ]

单元测试类

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):

@file_data('F:/test/config/testddt.yaml')deftest4(self, data):print("yaml", data)

测试结果

yaml [10, 15, 12]

yaml [15, 12, 50]

文章来源: www.cnblogs.com,作者:小菠萝测试笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:https://www.cnblogs.com/poloyy/p/12274265.html

python 数据驱动接口自动化框架_python接口自动化测试 - 数据驱动DDT模块的简单使用...相关推荐

  1. python接口自动化参数化_python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  2. python接口自动化项目_python接口自动化(四十二)- 项目结构设计之大结局(超详解)...

    简介 这一篇主要是将前边的所有知识做一个整合,把各种各样的砖块---模块(post请求,get请求,logging,参数关联,接口封装等等)垒起来,搭建一个房子.并且有很多小伙伴对于接口项目测试的框架 ...

  3. python接口自动化参数化_python接口自动化6-参数化关联

    前言 接口中我们经常需要用到参数关联,比如,登录token,需要传给后面的参数使用,又比如要查看某个商品需要将商品的id传入下一个接口使用. 等等,所以我们必要学会 re 正则获取,或者返回json获 ...

  4. python接口自动化登录_python 接口自动化--登录

    原博文 2018-07-22 23:23 − 从目前知道系统登录来看一般主要是与数据库存储用户名密码进行比对,若登录域名和业务域名不是同一个还需要获取业务域的coockie hre项目登录demo: ...

  5. python api开发用什么框架_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  6. 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

    python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...

  7. python 自动化框架打包_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  8. python接口自动化实战(框架)_python接口自动化框架实战

    python接口测试的原理,就不解释了,百度一大堆. 先看目录,可能这个框架比较简单,但是麻雀虽小五脏俱全. 各个文件夹下的文件如下: 一.理清思路 我这个自动化框架要实现什么 1.从excel里面提 ...

  9. python+requests+pytest 接口自动化框架(一)

    目录 一.Pytest详解以及常用的插件安装 二.Pytest默认的测试用例的规则 三.Pytest用例运行方式以及参数 1.命令行模式运行 命令:pytes 2.主函数模式运行 3.基于pytest ...

最新文章

  1. python【力扣LeetCode算法题库】892-三维形体的表面积
  2. Python3 PyQt5 PyCharm 环境搭建
  3. 实现对HDFS增删改查CRUD等操作
  4. python气象数据处理与绘图_Python气象数据处理与绘图:纬高图的另一种思路
  5. Postgre合并多行数据为一行
  6. linux-facl权限控制-移除-复制
  7. Java——动态绑定和多态
  8. MongoDB 4.0 RC 版本强势登陆
  9. BZOJ1941: [Sdoi2010]Hide and Seek
  10. 一种类型安全的Java HTTP客户端库Retrofit
  11. hp1015驱动64位_HP LaserJet 1015 驱动下载
  12. dwg格式的计算机图,看图纸(DWG文件浏览器)
  13. 人工智能-SVM 支持向量机
  14. QQ浏览器的历史记录在那 QQ浏览器查看浏览历史的方法
  15. 华为p20位置服务器在哪打开,华为p20在哪里打开北斗定位 | 手游网游页游攻略大全...
  16. QQ揭秘:如何实现窗体靠边隐藏?【低调赠送:QQ高仿版GG 4.2 最新源码】
  17. 微信小程序——登录/注册页面的实现
  18. Java工程师面试题,最全的java手机游戏免费下载基地
  19. GO微服务实战之红包系统
  20. decode函数的用法(decode函数的用法python二进制)

热门文章

  1. Zend创始人离职原来早已安排好
  2. 【NET CORE微服务一条龙应用】第二章 配置中心使用
  3. .NET微服务调查结果
  4. SQL2017 Azure SQL新功能:图形数据库
  5. .NET Core全新的配置管理[共9篇]
  6. nginx 实用配置问题总结
  7. [转]2020年5月程序员工资统计,平均14542元
  8. 【JX4G】JX4G摄影测量工作站快捷键大全
  9. 【必懂】C语言水仙花数题解
  10. php基础教程 第六步 学习数组以及条件判断switch补充