一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向、逆向等多种组合。所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别。
这个时候就可以利用ddt来管理测试数据,提高代码复用率。
※但要注意:正向和逆向的要分开写※
安装:pip install ddt
四种模式:第一步引入的装饰器@ddt;导入数据的@data;拆分数据的@unpack;导入外部数据的@file_data

1、读取元组数据
#一定要和单元测试框架一起用
import unittest,os
from ddt import ddt,data,unpack,file_data

‘’‘NO.1单组元素’’’
@ddt
class Testwork(unittest.TestCase):

@data(1,2,3)
def test_01(self,value):      #value用来接收data的数据print(value)

if name == ‘main’:
unittest.main()
结果:
=>1
2
3

‘’‘NO.2多组未分解元素’’’
@ddt
class Testwork(unittest.TestCase):

@data((1,2,3),(4,5,6))
def test_01(self,value):       print(value)

if name == ‘main’:
unittest.main()
结果:
=>(1, 2, 3)
(4, 5, 6)

‘’‘NO.3多组分解元素’’’
@ddt
class Testwork(unittest.TestCase):

@data((1,2,3),(4,5,6))
@unpack          #拆分数据
def test_01(self,value1,value2,value3):    #每组数据有3个值,所以设置3个形参print(value)

if name == ‘main’:
unittest.main()
结果:
=>1 2 3
4 5 6

2、读取列表数据
import unittest,os
from ddt import ddt,data,unpack,file_data

‘’‘NO.1单组元素和多组元素未分解都一样,下面看嵌套,考眼力了~’’’
@ddt
class Testwork(unittest.TestCase):

@data([{'name':'lili','age':12},{'sex':'male','job':'teacher'}])
# @unpack
def test_01(self,a):print(a)

if name == ‘main’:
unittest.main()
结果:
=>[{‘name’: ‘lili’, ‘age’: 12}, {‘sex’: ‘male’, ‘job’: ‘teacher’}]
※上面结果可以看出:无法运用到requests数据请求中,所以不是很实用※

‘’‘NO.2多组元素分解’’’
@ddt
class Testwork(unittest.TestCase):

@data([{'name':'lili','age':12},{'sex':'male','job':'teacher'}])
@unpack
def test_01(self,a,b):print(a,b)

if name == ‘main’:
unittest.main()
结果:
=>{‘name’: ‘lili’, ‘age’: 12} {‘sex’: ‘male’, ‘job’: ‘teacher’}
※拆分后的运行结果,不带有[ ],拆分是将列表中的2个字典拆分,所以有2个数据※

3、读取字典数据
import unittest,os
from ddt import ddt,data,unpack,file_data

‘’’※字典的读取比较特殊,因为在拆分的时候,形参和实参的key值要一致,否则就报错※’’’

‘’‘NO.1单组数据’’’
@ddt
class Testwork(unittest.TestCase):

@data({'name':'lili','age':'16'},{'sex':'female','job':'nurser'})
# @unpack
def test_01(self,a):print(a)

if name == ‘main’:
unittest.main()
结果:
=>{‘name’: ‘lili’, ‘age’: ‘16’}
{‘sex’: ‘female’, ‘job’: ‘nurser’}
※以上运行的结果数据,就可以用来作为requests的请求参数~!※

‘’‘NO.2多数据拆分,重点来了’’’
@ddt
class Testwork(unittest.TestCase):

@data({'name':'lili','age':'16'},{'name':'female','age':'nurser'})
@unpack
def test_01(self,name,age):print(name,age)

if name == ‘main’:
unittest.main()
结果:
=>lili 16
female nurser
※重点来了:首先结果展示的数据是字典里的value,没有打印key的值;其次@data里的数据key值和def方法里的形参
名称一定要一致,否则,打印的时候,就会报莫名的参数错误,这里就不做展示,爱学习的同学可以尝试一下~!※

4、读取文件数据
import unittest,os
from ddt import ddt,data,unpack,file_data

‘’‘数据格式必须为json,且必须为双引号的键值对形式,如果不是json格式,有列表等其它格式嵌套的话,无论是
否有@unpack,形参和参数数量都要和key值相等’’’
@ddt
class testwork(unittest.TestCase):
testdata=[{‘a’:‘lili’,‘b’:12},{‘a’:‘sasa’,‘b’:66}]
@data(*testdata)
# @unpack
def test_01(self,value):
print(value)

@file_data(os.getcwd()+'/jsonll.txt')
def test_02(self,value2):print(value2)

if name == ‘main’:
unittest.main()
结果:
=>{‘a’: ‘lili’, ‘b’: 12}
{‘a’: ‘sasa’, ‘b’: 66}
nick
male
29

python驱动:ddt用法相关推荐

  1. python 仪表驱动_技术文章 | 锐视模块化仪器python驱动使用说明

    原标题:技术文章 | 锐视模块化仪器python驱动使用说明 简仪的硬件驱动都是使用C#用统一接口包装的,所有的MACOs都是开放型的,有明确的方法(Methods)和属性(Properties)定义 ...

  2. python 基于ddt实现数据驱动测试

    这篇文章主要介绍了python 基于DDT实现数据驱动测试的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下 简单介绍 ​ ddt(date driver test),所谓数据驱 ...

  3. 简单介绍Python中异常处理用法

    这篇文章主要给大家分享的是 Python中异常处理用法,为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,下面来看看文章对此的用法,需要的朋友可以参考一下 为了保证程 ...

  4. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  5. python matplotlib 简单用法

    python matplotlib 简单用法 具体内容请参考官网 代码 import matplotlib.pyplot as plt import numpy as np # 支持中文 plt.rc ...

  6. (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案

    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 参考文章: (1)(转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 (2)ht ...

  7. python装饰器实例-Python装饰器用法实例总结

    本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 一.装饰器是什么 python的装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能, ...

  8. Mongodb python驱动教程

    2019独角兽企业重金招聘Python工程师标准>>> Mongodb python驱动教程 安装 使用python驱动mongodb需要下载.安装PyMongo包 Windows用 ...

  9. python所有函数用法_Python函数使用方法(高级用法)

    前面章节,已经介绍了 Python 函数的所有基本用法和使用注意事项.但是,Python 函数的用法还远不止此,Python 函数还支持赋值.作为其他函数的参数以及作为其他函数的返回值. 首先,Pyt ...

  10. python的property用法_python @property的用法及含义全面解析

    在接触python时最开始接触的代码,取长方形的长和宽,定义一个长方形类,然后设置长方形的长宽属性,通过实例化的方式调用长和宽,像如下代码一样. class Rectangle(object): de ...

最新文章

  1. 2018-3-25论文(Whale Optimizer Algorithm)+(Gery Wolf Optimizer)笔记三---算法部分的对比
  2. Net 4.0 Parallel 编程(六)Task(下)
  3. 16g版nexus5 升级带android 4.4,Nexus 5升级如何Android 4.4.1 Nexus 5升级到4.4.1方法教程
  4. windows 安装yaml支持和pytest支持等
  5. Linux新加硬盘添加一个新的LVM磁盘组
  6. Apache ab 压力测试工具
  7. GitHub入门详解
  8. 计算机科学课程规范,计算机科学及技术学院《本科生课程设计规范化要求》.doc...
  9. 九、Linux的网络配置
  10. 如何优化网页的加载速度
  11. 如何解决竞价推广中的恶意点击?
  12. 关于flash强制更新:早上上班,多台电脑提示未安装flash
  13. vue-cli在webpack环境下怎样生成开发环境模板(适合初学者)
  14. 解决阿里巴巴JSONObject工具 com.alibaba.fastjson.JSONObject cannot be cast to 的问题
  15. 生活随记-公平和本分
  16. 【vue3】关于ref、toRef、toRefs那些事
  17. 终于明白了,为什么会有经济危机
  18. 修改Wordpress固定链接导致页面无法无法访问的解决办法
  19. 遥感—以常用夜光遥感卫星介绍为主
  20. 电脑安装有WPS和OFFICE时,将office设置为默认打开软件

热门文章

  1. html 无缝轮播图完整代码
  2. 一级计算机基础及ms office应用练习,全国计算机等级考试一级计算机基础及MS Office应用模拟练习系统...
  3. Oracle 11g SQLPlus命令
  4. 从零开始做手机云台/稳定器
  5. STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭
  6. Idea插件开发之Gradle
  7. 高级项目经理和项目经理的区别
  8. 计算机里的打印机从哪找,电脑打印机在哪里找出来
  9. 初识人脸识别---人脸识别研究报告(概述篇)
  10. Flex Builder 快捷键