Python 数据驱动ddt 使用
准备工作: pip install ddt
知识点:
一,数据驱动和代码驱动:
数据驱动的意思是 根据你提供的数据来测试的 比如 ATP框架 需要excel里面的测试用例
代码驱动是必须得写代码 它才能测试 比如说unittest
二,使用数据驱动框架的意义:
- 代码复用率高。同一测试逻辑编写一次,可以被多条测试数据复用,提高了测试代码的复用率,同时可以提高测试脚本的编写效率。
- 异常排查效率高。测试框架依据测试数据,每条数据生成一条测试用例,用例执行过程相互隔离,在其中一条失败的情况下,不会影响其他的测试用例。
-代码的可维护性高。清晰的测试框架,利于其他测试工程师阅读,提高了代码的可维护性。
tips : 参数少的用yml挺好 参数多的,用json xx.json 格式 这种上下有依赖关系的 就写py文件
文件名.json的话是json文件里面要写json串
yml每个接口都是独立运行的
DDT 使用
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据)
只有yaml和yml结尾的文件以yaml形式上传,其他情况下默认为json
通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据
@data(a,b)
那么a和b各运行一次用例
@data([a,b],[c,d])
如果没有unpack,那么[a,b]当成一个参数传入用例运行
如果有unpack,那么[a,b]被分解开,按照用例中的两个参数传递
@file_data(filename)
对于json的文件,每一个json元素按照一个用例运行,可以依照python分解元组,列表或者字典的方式分解传入
实例:
import ddt
import unittest
# print(dir(ddt)) @ddt.ddt
class MyCase(unittest.TestCase):
@ddt.data(1,2) #运行2次
def testa(self,value):
print(value) @ddt.data([1,2]) #运行1次
def testb(self,value):
print(value) @ddt.data([1,2],[3,4]) #不加unpack 会报错
def testc(self,a,b):
self.assertNotEqual(a,b) @ddt.data([1,2],[3,4]) #运行2次
@ddt.unpack
def testd(self,a,b):
self.assertNotEqual(a,b) if __name__ == '__main__':
unittest.main()
最新文章
- Java:Map
- Jackson怎样转换这样的字符串? String jsonStr = ";{dataType:'Custom',regexp:'t\\d+',msg:'输入不正确'}";;
- 删除_desktop.ini病毒文件
- 透过表象看本质!?之二——除了最小p乘,还有PCA
- 数据结构读书笔记(三)(C语言)
- Caused by: java.lang.ClassNotFoundException: javax.transaction.TransactionManager
- 前端开发中一些好用的chrome插件总结
- Python模块学习------ 多线程threading(1)
- python_如何使用临时文件
- PHP中::的使用
- 让opencv程序在没有安装opencv的电脑上运行
- Layer 使用
- Ubuntu 18.04 安装java8
- SQL语句利用日志写shell
- pycharm怎么设置代码自动补齐
- Linux下设置动态库的方法
- PAT 甲级 1023 Have Fun with Numbers(20)(思路分析)
- AngularJS controller as vm方式
- [转]Linux sendmail 详解
- android--------自定义Dialog之信息提示
热门文章
- ORACLE 查看CPU使用率最高的语句及一些性能查询语句
- 循环链表的创建、插入、删除、逆序、显示(C++实现)
- utf8_general_ci、utf8_unicode_ci和utf8_bin的区别
- ECharts学习总结(一):ECharts的第一个图表
- SCP远程拷贝命令
- html5图表
- 利用反射实现JavaBean的自动赋值
- html中嵌入flvplayer.swf播放器,播放视频
- UNIX网络编程读书笔记:原始套接口
- CentOS6.5搭建MySQL5.1主从复制