python接口自动化测试 - 数据驱动DDT模块的简单使用
DDT简单介绍
- 名称:Data-Driven Tests,数据驱动测试
- 作用:由外部数据集合来驱动测试用例的执行
- 核心的思想:数据和测试代码分离
- 应用场景:一组外部数据来执行相同的操作
- 优点:当测试数据发生大量变化的情况下,测试代码可以保持不变
- 实际项目:excel存储测试数据,ddt读取测试数据到单元测试框架(测试用例中),输出到html报告
什么是数据驱动
就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说的直白些,就是参数化的应用
DDT基础使用(一):传递基础数据类型
# 导入ddt库下所有内容
from ddt import * # 在测试类前必须首先声明使用 ddt
@ddt
class imoocTest(unittest.TestCase): # int
@data(1, 2, 3, 4)
def test_int(self, i):
print("test_int:", i) # str
@data("", "", "")
def test_str(self, str):
print("test_str:", str)
测试结果
test_int: 1
test_int: 2
test_int: 3
test_int: 4
test_str: 1
test_str: 2
test_str: 3
包含知识点
想使用DDT首先要在单元测试类上面加上 @ddt
DDT基础使用(二):传递一个复杂的数据结构
from ddt import * # 在测试类前必须首先声明使用 ddt
@ddt
class imoocTest(unittest.TestCase):
tuples = ((1, 2, 3), (1, 2, 3))
lists = [[1, 2, 3], [1, 2, 3]] # 元组
@data((1, 2, 3), (1, 2, 3))
def test_tuple(self, n):
print("test_tuple", n) # 列表
@data([1, 2, 3], [1, 2, 3])
@unpack
def test_list(self, n1, n2, n3):
print("test_list", n1, n2, n3) # 元组2
@data(*tuples)
def test_tuples(self, n):
print("test_tuples", n) # 列表2
@data(*lists)
@unpack
def test_lists(self, n1, n2, n3):
print("test_lists", n1, n2, n3) # 字典
@data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})
@unpack
def test_dict(self, value1, value2):
print("test_dict", value1, value2)
测试结果
test_dict 1 2
test_dict 1 2
test_list 1 2 3
test_list 1 2 3
test_lists 1 2 3
test_lists 1 2 3
test_tuple (1, 2, 3)
test_tuple (1, 2, 3)
test_tuples (1, 2, 3)
test_tuples (1, 2, 3)
包含知识点
- @unpack :当传递的是复杂的数据结构时使用。比如使用元组或者列表,添加 @unpack 之后, ddt 会自动把元组或者列表对应到多个参数上。字典也可以这样处理
- 当没有加unpack时,test_case方法的参数只能填一个;如元组的例子
- 当你加了unpack时,传递的数据量需要一致;如列表例子中,每个列表我都固定传了三个数据,当你多传或少传时会报错,而test_case方法的参数也要写三个,需要匹配上
- 当传的数据是字典类型时,要注意每个字典的key都要一致,test_case的参数的命名也要一致;如字典的例子,两个字典的key都是value1和value2,而方法的参数也是
- 当传的数据是通过变量的方式,如元组2、列表2,变量前需要加上*
DDT基础使用(三):传递json文件
json文件
{
"first": [
{
"isRememberMe": "True",
"password": "",
"username": "root"
},
""
],
"second": [
"{'isRememberMe': True, 'password': '1111111', 'username': 'root'}",
""
],
"third": [
1,
2
],
"four": ""
}
单元测试类
from ddt import * # 在测试类前必须首先声明使用 ddt
@ddt
class imoocTest(unittest.TestCase): @file_data('F:/test/config/testddt.json')
def test_json(self, data):
print(data)
测试结果
[{'isRememberMe': 'True', 'password': '', 'username': 'root'}, '']
["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}", '']
[1, 2, 3, 4]
123123
DDT基础使用(四):传递Yaml文件
yaml文件
unsorted_list:
- 10
- 15
- 12 sorted_list: [ 15, 12, 50 ]
单元测试类
from ddt import * # 在测试类前必须首先声明使用 ddt
@ddt
class imoocTest(unittest.TestCase): @file_data('F:/test/config/testddt.yaml')
def test4(self, data):
print("yaml", data)
测试结果
yaml [10, 15, 12]
yaml [15, 12, 50]
python接口自动化测试 - 数据驱动DDT模块的简单使用的更多相关文章
- python接口自动化测试(一)-request模块
urllib.request模块是python3针对处理url的. 1. 首先导入: from urllib import request 2. 构造url,构造url的headers信息和传参[re ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- Python接口自动化测试框架实战 从设计到开发
第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...
- 使用jmeter+ant进行接口自动化测试(数据驱动)之二:利用apache-ant执行测试用例并生成HTML格式测试报告
在 使用jmeter+ant进行接口自动化测试(数据驱动)之一 介绍了如何使用csv文件来批量管理接口 本次接着介绍如何利用apache-ant执行测试用例并生成HTML格式测试报告 ①下载安装 ap ...
- python接口自动化测试七:获取登录的Cookies
python接口自动化测试七:获取登录的Cookies,并关联到下一个请求 获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...
- 记录python接口自动化测试--简单总结一下学习过程(第十目)
至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...
- python - 接口自动化测试实战 - case1 - 再次优化版
本次优化: 1. 各级分Package 2. 封装[ReadExcel]类 3. 封装[ReadConfig]类 4. 封装[GetLog]类 5. 引入ddt数据驱动测试,优化测试用例代码 ...
- python 接口自动化测试(三)
1.WriteIni.py import ConfigParser cf = ConfigParser.ConfigParser() cf.add_section("PC_WSDL" ...
随机推荐
- 【题解】Vijos1404 遭遇战(最短路图论套路)
[题解]Vijos1404 遭遇战(最短路图论套路) 感觉一定要有建模的思想,不管什么东西要抽象建模之后再用算法解决... 求最短代价就可能可以用最短路,这句话不是强行解释,而是因为图论建模过后,可能 ...
- Linux上查找最大文件的 3 种方法
有时候我们在系统上安装了数十个应用程序,随着使用时间的推移,许多文件变得越来越大,从而导致磁盘空间越来越小.那么问题来了,如何找到系统上这些大文件,然后进行一番磁盘空间清理呢,这篇文章就此介绍几种查找 ...
- spring cloud微服务快速教程之(六) 应用监控 spring boot admin
0-前言 当我们发布了微服务后,我们希望对各个应用的各个运行状况进行一个监控:这个时候spring boot admin,就出场了: spring boot admin:是一个监控和管理spring ...
- jenkins +git+ssh 构建 .net项目
jenkins +git+ssh 构建 .net项目 安装jenkins jdk 和插件就不一一介绍了. Multiple SCMs 插件介绍:可以获取多个项目(如果你的项目中有依赖其他项目的) So ...
- 一个简单的spring boot程序
搭建一个spring boot项目十分的方便,网上也有许多,可以参考 https://www.cnblogs.com/ityouknow/p/5662753.html 进行项目的搭建.在此我就不详细介 ...
- C# 阿里云查询、删除文件
class Program { static string regionId = "cn-shanghai"; static string accessKeyId = " ...
- Go语言教程之结构体
Hello,大家好,我是小栈君,最近因为工作的事情延误了一点分享的进度,但是我会尽量抽时间分享关于IT干货知识,还希望大家能够持续关注"IT干货栈"哦. 闲话不多说,今天给大家继续 ...
- Keystone V3 API Examples
There are few things more useful than a set of examples when starting to work with a new API. Here a ...
- Spring Boot2 系列教程 (十四) | 统一异常处理
如题,今天介绍 SpringBoot 是如何统一处理全局异常的.SpringBoot 中的全局异常处理主要起作用的两个注解是 @ControllerAdvice 和 @ExceptionHandler ...
- http GET 和 POST 请求的优缺点和误区 --前端优化
Get和Post在面试中一般都会问到,一般的区别:(1)post更安全(不会作为url的一部分,不会被缓存.保存在服务器日志.以及浏览器浏览记录中)(2)post发送的数据更大(get有url长度限制 ...