unittest---unittest数据驱动(ddt)
在做测试的时候,有些地方无论是接口还是UI只是参数数据的输入不一样,操作过程是一样的。重复去写操作过程会增加代码量,我们可以通过参数化的方式解决这个问题,也叫做数据驱动,我们通过python做参数化的方法有很多种,今天我们介绍一种简单的方法DDT
ddt
官方文档:https://ddt.readthedocs.io/en/latest/example.html
ddt属于python的第3方库,需要通过pip进行安装
pip install ddt
ddt中常用的类的装饰器一个data(可以直接传数据)一个filed_data(可以通过json或者yaml传输)解压分析数据unpack,剩下的小伙伴们可以自己看看源码进行学习哈
data装饰器源码
def data(*values):
"""
方法装饰器来添加到您的测试方法中。
应该添加到' ' unittest.TestCase ' '实例的方法中
"""
global index_len
index_len = len(str(len(values)))
return idata(values)
file_data装饰器源码
def file_data(value):
"""
方法装饰器来添加到您的测试方法中。
应该添加到' ' unittest.TestCase ' '实例的方法中。
' ' value ' '应该是一个相对于文件目录的路径
包含修饰过的' ' unittest.TestCase ' '。该文件
应该包含JSON编码的数据,可以是列表,也可以是
字典
对于列表,列表中的每个值都对应一个值
测试用例,该值将连接到测试方法
的名字。 """
def wrapper(func):
setattr(func, FILE_ATTR, value)
return func
return wrapper
unpack源码
def unpack(func):
"""
方法装饰器来添加解压功能。 """
setattr(func, UNPACK_ATTR, True)
return func
这里我们通过一个来更加的了解下DDT数据驱动的内容
小试牛刀
通过查询音乐接口了解ddt使用方法
data装饰器
1、首先导入ddt模块,在类在修饰ddt.ddt
2、编写ddt用例格式
3、使用的用例修饰ddt.data
4、查看导入数据是否正确
这里的参数数据一般字典形式存放,一组数据为一组字典
# coding:utf-8
import unittest
import requests
import ddt
# 参数数据
testddt = [{'name':'断桥残雪'},
{'name':'像鱼'}]
@ddt.ddt
class Music(unittest.TestCase): def select(self,name):
url = 'https://api.apiopen.top/searchMusic'
data = {
"name":name
}
r = requests.post(url,data=data)
b = r.json()['result'][0]['title']
return b
@ddt.data(*testddt)
def test01(self,data):
print('当前测试数据:%s'%data)
result = self.select(data['name'])
self.assertEqual(result,data['name']) if __name__ == '__main__':
unittest.main()
通过执行后,我们可以发现用例全部都是通过的,执行的数据也是我们ddt中存放的数据
unpack装饰器
如果数据在字典内容展示,但是下面没有具体的提取数据,我们可以通过这个unpack来解压数据
# coding:utf-8
import unittest
import requests
import ddt
# 参数数据
testddt = [{'name':'断桥残雪'},{'name':'像鱼'}]
@ddt.ddt
class Music(unittest.TestCase):
def select(self,name):
url = 'https://api.apiopen.top/searchMusic'
data = {
"name":name
}
r = requests.post(url,data=data)
b = r.json()['result'][0]['title']
return b
@ddt.data(*testddt)
@ddt.unpack
def test01(self,name):
print('当前测试数据:%s'%name)
result = self.select(name)
self.assertEqual(result,name) if __name__ == '__main__':
unittest.main()
file_data装饰器
file_data可以通过读取yaml和json的数据来进行实现,我们可以动手试试下,先配置yaml把想要的数据类型都存放在里面
读取方法,在用例上方添加装饰器后面带上yaml的文件名,通过请求后发现已经请求成功了
# coding:utf-8
import unittest
import requests
import ddt
@ddt.ddt
class Music(unittest.TestCase):
def select(self,name):
url = 'https://api.apiopen.top/searchMusic'
data = {
"name":name
}
r = requests.post(url,data=data)
b = r.json()['result'][0]['title']
return b
@ddt.file_data('name.yaml')
def test01(self,name):
print('当前测试数据:%s'%name)
result = self.select(name)
self.assertEqual(result,name) if __name__ == '__main__':
unittest.main() 当前测试数据:断桥残雪
当前测试数据:像鱼
..
----------------------------------------------------------------------
Ran 2 tests in 0.244s OK
这里还有file_data也可以请求json数据,这里就不做写,大家可以自己动手写一写
unittest---unittest数据驱动(ddt)的更多相关文章
- unittest使用数据驱动ddt
简介 ddt(data driven test)数据驱动测试:由外部数据集合来驱动测试用例,适用于测试方法不变,但需要大量变化的数据进行测试的情况,目的就是为了数据和测试步骤的分离 由于unittes ...
- unittest框架(三)unittest+yaml数据驱动
学习完了如何用yaml文件管理用例,如何进行单元测试,如何产生漂亮的测试报告,那么结合这几点,我们简单学习下unittest+yaml数据驱动来测试. 第一步:首先,我们建一个yaml文件,管理用例, ...
- python webdriver 测试框架-数据驱动DDT的例子
先在cmd环境 运行 pip install ddt 安装数据驱动ddt模块 脚本: #encoding=utf-8 from selenium import webdriver import un ...
- Python 数据驱动ddt 使用
准备工作: pip install ddt 知识点: 一,数据驱动和代码驱动: 数据驱动的意思是 根据你提供的数据来测试的 比如 ATP框架 需要excel里面的测试用例 代码驱动是必须得写代码 ...
- python之数据驱动ddt操作(方法二)
import unittestfrom ddt import ddt,unpack,datafrom selenium import webdriverfrom selenium.webdriver. ...
- python之数据驱动ddt操作(方法一)
下载ddt并安装 Pip install ddt 或者官网下载安装 http://ddt.readthedocs.io/en/latest/ https://github.com/txels/ddt ...
- 数据驱动——ddt
1: pip3 install ddt 2: @ddt 装饰 @data((2,3),(4,5)) 支持列表,元祖,字典 @unpack 解压数据 1 import unittest 2 from ...
- Python Unittest与数据驱动
python中有一个装饰器类DDT,通过它我们可以复用代码,达到数据驱动测试的目的,该类的官方介绍可以参考 http://ddt.readthedocs.io/en/latest/index.html ...
- Python unittest excel数据驱动
安装xlrd 下载地址:https://pypi.python.org/pypi/xlrd 安装ddt 下载地址:https://pypi.python.org/pypi/ddt/1.1.0 clas ...
- Python unittest excel数据驱动 写入
之前写过一篇关于获取excel数据进行迭代的方法,今天补充上写入的方法.由于我用的是Python3,不兼容xlutils,所以无法使用copy excel的方式来写入.这里使用xlwt3创建excel ...
随机推荐
- rapidxml编写xml文件(er)
一.以rapidxml::node_declaration形式写xml文件第一行 int write(void) { ; rapidxml::xml_document<> doc; rap ...
- 简单的单元测试unittest实例
unittest是Python中自带的一个单元测试模块,常常用它来做单元测试,它里面封装了用例的初始化操作和执行,以及返回结果的校验等操作. 在学习unittest框架之前需要先了解几个知识点: Te ...
- Centos5.5更新源
将之前的CentOS-Base.repo文件里的内容换成如下内容 vi /etc/yum.repos.d/CentOS-Base.repo # CentOS-Base.repo## The mirro ...
- redis基本操作,基于StringRedisTemplate,存储,取值,设置超时时间,获取超时时间,插入list操作
@Autowired private StringRedisTemplate stringRedisTemplate; @GetMapping("/test") void test ...
- Java 数据脱敏 工具类
一.项目导入Apache的commons的Jar包. Jar包Maven下载地址:https://mvnrepository.com/artifact/org.apache.commons/commo ...
- vc code js 配置
VSCode (for JS develop) https://www.jianshu.com/p/c56ea43b2b34 前言 编辑器之间的竞争一直也十分的激烈,用过Webstom,Hbuilde ...
- P4710 平抛运动
题目:https://www.luogu.org/problemnew/show/P4710 $$ v_x = v_{x_0} = v \ sin \ \theta, \ v_y = v_{y_0} ...
- 几个原生js知识
1.document.documentElement 返回根节点 html. 2.原生方法获取一个对象的某个样式的值. function getStyle(obj, attr) { if(obj.cu ...
- 使用 Sandcastle Help File Builder 制作文档
1.下载安装 Sandcastle 程序. http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=shfb& ...
- python 基础之字符串方法
字符串 print('chenxi'*8) 测试 D:\python\python.exe D:/untitled/dir/for.py chenxichenxichenxichenxichenxic ...