转自:http://www.cnblogs.com/nuonuozhou/p/8645129.html

ddt   结合单元测试一起用
ddt(data.driven.test):数据驱动测试
由外部数据集合来驱动测试用例
核心的思想:数据和测试代码分离
 
应用场景:一组数据来执行相同的操作
当测试数据发生大量变化的情况下测试代码,(或者说测试用例)可以保持不变
 
excel存储测试数据,ddt读取测试数据到 单元测试框架(测试用例中)-输出到html报告
 
python.ddt框架
安装:pip install ddt
 
使用之前先导入ddt
import ddt
 
ddt结合单元测试来使用
1.在测试类定义定义之前使用:@ddt.ddt
2.在测试用例定义之前使用,@ddt.data(测试数据) 测试数据之间用逗号隔开
3.在2的基础上定义测试用例时,参数接收2中的测试数据
 
例:
@ddt.ddt
class Demo Test(unittest.TestCase):
         @ddt.data(2,3,4)
         def test_print(self,a)
              print("简单调用@data查看输出的是什么?",a)
 
例子
import ddt
import unittest
@ddt.ddt
class test_PersonInfo(unittest.TestCase):
    @classmethod
    def setUp(self):
        print("==========开始测试==========")
    @classmethod
    def tearDown(self):
        print("==========结束测试==========")
 
   @ddt.data(1,2,3,4)
    def test_print(self,a):
        print(a)
 
 
ddt-data 数据
一组数据之间用逗号隔开
data的参数可以为如下几种
1.一组数据中,每个数据为单个值
2.一组数据中,每个数据为一个列表或者一个字典
3.文件对象:jason,yaml
 
一组数据中的数据为列表或者字典:
@data([a,b],[c,d])
 
如何从以上数据中获取到字典中每一项值
@unpack
若变量A=[{a:b,a1:b1},{c:d,c1:d1}]
如何将变量A中的每一组元素作为测试数据
@ddt.data(*A)
 
import ddt
import unittest
@ddt.ddt
class test_PersonInfo(unittest.TestCase):
    @classmethod
    def setUp(self):
        print("==========开始测试==========")
    @classmethod
    def tearDown(self):
        print("==========结束测试==========")
 
    @ddt.data([1,2],[3,4])
    def test_print(self,a):
print(a)
==========开始测试==========
[1, 2]
==========结束测试==========
==========开始测试==========
[3, 4]
==========结束测试==========
 
        print(a[0])
==========开始测试==========
1
==========结束测试==========
==========开始测试==========
3
==========结束测试==========
 
  @ddt.data([1,2],[3,4])
    @ddt.unpack
    def test_print(self,a,b):
        print(a,b)
 
==========开始测试==========
1 2
==========结束测试==========
==========开始测试==========
3 4
==========结束测试==========
 
@ddt.data([{"a":2,"b":3},{"c":4,"d":8},{"e":5,"f":7}])
    def test_print(self,a):
        print(a)
==========开始测试==========
[{'a': 2, 'b': 3}, {'c': 4, 'd': 8}, {'e': 5, 'f': 7}]
==========结束测试==========
 
@ddt.data(*datas)
    def test_print(self,datas):
        print(datas)
==========开始测试==========
{'class': 'python2', 'name': 'xiaoshitou', 'id': '0001', 'sex': 'male'}
==========结束测试==========
==========开始测试==========
{'class': 'python2', 'name': 'nuonuo', 'id': '0002', 'sex': 'female'}
==========结束测试==========
==========开始测试==========
{'class': 'python2', 'name': 'fly', 'id': '0003', 'sex': 'male'}
==========结束测试==========
==========开始测试==========
{'class': 'python2', 'name': 'haiyang', 'id': '0004', 'sex': 'male'}
==========结束测试==========
==========开始测试==========
{'class': 'python2', 'name': 'shuangshuang', 'id': '0005', 'sex': 'female'}
==========结束测试==========
 
dat-data数据
数据为文件对象:Json yaml
json格式里面必须为双引号“”,且必须为键值对,不存在纯列表格式,值作为测试数据
{"name":"nick","gender":"male","age":29}
 
@ddt.file_data(jason文件路径)
 
   @ddt.file_data(os.getcwd()+"/test.json")
    def test_json(self,data):
        print(data)
 
==========开始测试==========
[1, 2, 3]
==========结束测试==========
==========开始测试==========
python2
==========结束测试==========
==========开始测试==========
male
==========结束测试==========
==========开始测试==========
xiaoshitou
==========结束测试==========
==========开始测试==========
0001
==========结束测试==========       

python DDT读取excel测试数据的更多相关文章

  1. python下读取excel文件

    项目中要用到这个,所以记录一下. python下读取excel文件方法多种,用的是普通的xlrd插件,因为它各种版本的excel文件都可读. 首先在https://pypi.python.org/py ...

  2. Delphi中使用python脚本读取Excel数据

    Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  3. python+ddt+unittest+excel+request实现接口自动化

    接口自动化测试流程:需求分析-用例设计--脚本开发--测试执行--结果分析1.获取接口文档,根据文档获取请求方式,传输协议,请求参数,响应参数,判断测试是否通过设计用例2.脚本开发:使用request ...

  4. python xlrd 读取excel.md

    文章链接:https://mp.weixin.qq.com/s/fojkVO-AB2cCu7FtDtPBjw 之前的文章介绍过关于写入excel表格的方法,近期自己在做一个网站,涉及到读取excel, ...

  5. python(读取excel操作-xlrd模块)

    一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 或者在cmd窗口  pip install  ...

  6. Python实现读取Excel文档中的配置并下载软件包

    问题:现在遇到这样一个问题,服务器存储了很多软件包,这些包输入不同的产品,每个产品都有自己的配置,互相交叉,那么到底某一产品所有配置的软件包下载后,占用多大空间呢? 分析:从这个问题入手,了解到:软件 ...

  7. python(读取 excel 操作 xlrd 模块)

    一.安装 xlrd 模块 到 python 官网下载 http://pypi.python.org/pypi/xlrd 模块安装,前提是已经安装了 python 环境. 或者在 cmd 窗口  pip ...

  8. python xlrd读取excel常用方法

    最近学习了python操作excel,记录下常用方法. 需要安装xlrd模块, 打开cmd,输入命令:pip install xlrd  进行安装,若已安装显示如下: xlrd读取excel常用方法如 ...

  9. python脚本 读取excel格式文件 并进行处理的方法

    一.安装xlrd模块 pip install xlrd 二.读取excel文件 try: excel_obj = xlrd.open_workbook("文件路径") except ...

随机推荐

  1. dubbox消费者启动成功,却无法连接注册中心

    使用dubbox作为服务提供端很好实现,因为git的说明和网上有很多的例子可供参考,但是消费端都一笔带过,简单得很,初学者往往以为只要配置如下3样东西就够了: <?xml version=&qu ...

  2. WM_COMMAND 和 WM_NOTIFY 的区别

    当我们按下一个菜单选项,或者一个控件需要通知父窗口一个事件发生(如鼠标单击.双击等),或者快捷键被按下时,Windows将会发送一个 WM_COMMAND 消息给父窗口.那么 WM_COMMAND 消 ...

  3. DHCP(五)

    DHCP重新登录 在经过发现,提供,选择以及应答阶段后,DHCP客户端每次重新登录网络时,就不需要再发送DHCP DISCOVER发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP REQU ...

  4. web.config 权限设置

    <system.web> <authorization> <!--未登陆用户不可以访问--> <deny users="?" /> ...

  5. AJAX验证此ID是否有对应的name

    在表格输入一个ID,然后自动根据ID在数据库中查找是否有对应name 这是javascript部分,利用ajax验证 $(document).ready(function() { $("#c ...

  6. 文件操作方法大全以及文件打开的其他一些模式sys.stdout.write()就是标准输出到你当前的屏幕 sys.stdout.flush()把内存立即显示到您当前的屏幕

    read()会让你读取的光标变成最后.tell()把你现在文件的句柄的指针打印出来.文件的开头指针位置是0f.read(5)只读取5个字符串个数如果你想把光标移回去,移动到首位f.seek(0)f.d ...

  7. PHP中静态变量的使用

    1.定义静态变量 public static $endpoint,$accessKeyId,$accessKeySecret,$bucket; 2.静态变量赋值 protected function ...

  8. PHP 字符串 加*

    PHP字符串加* 思路: 获取第一个字符或文字 获取最后一个字符或文字 一头一尾,中间加* 尝试用substr方法,发现对中文的支持有问题. 后来发现mb_substr很好的解决了这个问题. < ...

  9. python对裤子进行一个查询

    前言: 获取到一个数据库,使用python对其 进简单的查询 代码: import time print('开房记录查询') def chax(): g=input('请输入要查询的>>& ...

  10. Linux批量“解压”JAR文件

    当你需要”解压“很多jar文件时,可以通过很多方式进行,比如下面这种 1,列出每一个jar文件名,逐个展开 for i in $(ls *sour*.jar);do jar xvf $i;done