转自: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下读取excel文件
项目中要用到这个,所以记录一下. python下读取excel文件方法多种,用的是普通的xlrd插件,因为它各种版本的excel文件都可读. 首先在https://pypi.python.org/py ...
- Delphi中使用python脚本读取Excel数据
Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...
- python+ddt+unittest+excel+request实现接口自动化
接口自动化测试流程:需求分析-用例设计--脚本开发--测试执行--结果分析1.获取接口文档,根据文档获取请求方式,传输协议,请求参数,响应参数,判断测试是否通过设计用例2.脚本开发:使用request ...
- python xlrd 读取excel.md
文章链接:https://mp.weixin.qq.com/s/fojkVO-AB2cCu7FtDtPBjw 之前的文章介绍过关于写入excel表格的方法,近期自己在做一个网站,涉及到读取excel, ...
- python(读取excel操作-xlrd模块)
一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 或者在cmd窗口 pip install ...
- Python实现读取Excel文档中的配置并下载软件包
问题:现在遇到这样一个问题,服务器存储了很多软件包,这些包输入不同的产品,每个产品都有自己的配置,互相交叉,那么到底某一产品所有配置的软件包下载后,占用多大空间呢? 分析:从这个问题入手,了解到:软件 ...
- python(读取 excel 操作 xlrd 模块)
一.安装 xlrd 模块 到 python 官网下载 http://pypi.python.org/pypi/xlrd 模块安装,前提是已经安装了 python 环境. 或者在 cmd 窗口 pip ...
- python xlrd读取excel常用方法
最近学习了python操作excel,记录下常用方法. 需要安装xlrd模块, 打开cmd,输入命令:pip install xlrd 进行安装,若已安装显示如下: xlrd读取excel常用方法如 ...
- python脚本 读取excel格式文件 并进行处理的方法
一.安装xlrd模块 pip install xlrd 二.读取excel文件 try: excel_obj = xlrd.open_workbook("文件路径") except ...
随机推荐
- hbase filter 简介
一.基本介绍 1.FilterList代表一个过滤器列表 FilterList.Operator.MUST_PASS_ALL --> 取交集 相当一and操作 FilterList.Operat ...
- 解决jenkins拉取报告没有样式的问题(还没试过)
来源: https://testerhome.com/topics/9476 对于测试报告来说,除了内容的简洁精炼,样式的美观也很重要.常用的做法是,采用HTML格式的文档,并搭配CSS和JS,实现自 ...
- java二维数组求每行最大值,每列最小值,及输出数组主对角线上的元素
总结:完全搞不懂,行和列是怎么弄的,,,,, package com.c2; import java.util.Scanner; public class Oaa { public static vo ...
- SpringBoot中通过SpringBootServletInitializer如何实现容器初始化
相关文章 <Servlet3.0之四:动态注册和Servlet容器初始化> <SpringBoot中通过SpringBootServletInitializer如何实现组件加载> ...
- 校赛热身赛 Problem D. Unsolved Mystery
Problem D. Unsolved MysteryThe world famous mathematician Wang Hao published a paper recently in the ...
- Oracle 索引扫描的几种情况
index range scan(索引范围扫描): 1.对于unique index来说,如果where 条件后面出现了<,> ,between ...and...的时候,那么就可能执行i ...
- MySQL router
MySQL Router is a building block for high availability (HA) solutions. It simplifies application dev ...
- Android Eclipse调试技巧
在Android 应用程序开发中我们经常需要调试程序,可以说调试在我们的日常开发中起着十分重要的作用,下面就以Elipse开发环境总结一下调试技巧. 一.Debug 断点调试 所谓断点调试就是指在程序 ...
- 15 更多jQuery知识
jqueryUI 官网: https://jqueryui.com/ jqueryUI 中文网: http://www.jqueryui.org.cn/ jquery插件内容包含 官网demo: ht ...
- 前端自动化之npm
npm——node依赖包管理工具 安装: 1.在nvm目录下复制npm和npm-cath文件夹 2.配置环境变量. 使用: 1.在项目文件夹,shift+右键打开命令窗口 2.npm init ...