python的def命令参数(python ddt数据驱动最简实例代码)
类别:脚本大全 浏览量:443
时间:2022-01-25 00:19:37 python的def命令参数
python ddt数据驱动最简实例代码在接口自动化测试中,往往一个接口的用例需要考虑 正确的、错误的、异常的、边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例。如果测试接口很多,不但需要写大量的代码,测试数据和代码柔合在一起,可维护性也会变的很差。数据驱动可以完美的将代码和测试数据分开,将代码进行分装,提高复用性,测试数据维护在本地文件或数据库。
使用python做接口自动化,首要任务是搭建一个自动化测试框架,其中unittest+ddt是一个不错的选择,下文主要介绍ddt在unittest下的使用。
ddt包含两个方法装饰器 ddt.data 和 ddt.file_data
一、ddt.data(直接输入测试数据)
ddt.unpack 的作用是把参数中 元祖 或者 列表 的元素对应到多个参数上,没有加 ddt.unpack 表示把 元祖 或者 列表本身当成一个参数传入。
下面这段代码,ddt.data() 有三组测试数据,每组测试数据都会执行一次 test_login() 。
|
import json import unittest from common.readConfig import readConfig import requests from ddt import ddt,data,file_data,unpack @ddt # 在测试类前必须首先声明使用 ddt.ddt class Mytest(unittest.TestCase): def setUp( self ): # 获取测试接口的url self .url = readConfig().getHttp( 'usercenter' ) + readConfig().get_UC( 'login' ) print ( 'setup' ) @data (({ "isRememberMe" : True , "password" : "111111" , "username" : "root" }, 200 ), ({ "isRememberMe" : True , "password" : "1111111" , "username" : "root" }, 406 ), ({ "isRememberMe" : True , "password" : "111111" , "username" : "rot" }, 406 )) @unpack # 后台人员登录 def test_login( self ,data,status): body = json.dumps(data) header = { "Content-Type" : "application/json" , "Accept" : "application/json" , "token" : "1231" } re = requests.post( self .url,data = body,headers = header,verify = False ) code = re.status_code print (re.text,re.status_code) # 断言 self .assertEqual( int (status), int (code)) def tearDown( self ): print ( 'tearDown' ) if __name__ = = '__main__' : unittest.main() |
二、ddt.file_data (参数是文件名。文件可以是json 或者 yaml类型)
如果文件中是列表,每个列表的值会作为测试用例参数,同时作为测试用例方法名后缀显示。如果文件中是字典,字典的key会作为测试用例方法的后缀显示,字典的值会作为测试用例参数。下文两种类型的文件分别举一个例子。
新建文件testdata.json:
|
{ "first" : [ "{'isRememberMe': True,'password': '111111','username': 'root'}" , "200" ], "second" : [ "{'isRememberMe': True, 'password': '1111111', 'username': 'root'}" , "406" ], "third" : [ "{'isRememberMe': True, 'password': '111111', 'username': 'rot'}" , "406" ] } |
新建文件testdata.yaml:
|
first: [ "{'isRememberMe': True,'password': '111111','username': 'root'}" , "200" ] second: [ "{'isRememberMe': True, 'password': '1111111', 'username': 'root'}" , "406" ] third: [ "{'isRememberMe': True, 'password': '111111', 'username': 'rot'}" , "406" ] |
新建测试脚本:
|
import json import unittest from common.readConfig import readConfig import requests from ddt import ddt,data,file_data,unpack @ddt # 在测试类前必须首先声明使用 ddt.ddt class Mytest(unittest.TestCase): def setUp( self ): # 获取测试接口的url self .url = readConfig().getHttp( 'usercenter' ) + readConfig().get_UC( 'login' ) print ( 'setup' ) @file_data ( 'D:\\automation--interface\\testcase\\UC\\testdata.json' ) # @file_data('D:\\automation--interface\\testcase\\UC\\testdata.yaml') # 后台人员登录 def test_login( self ,data): body = json.dumps( eval (data[ 0 ])) status = data[ 1 ] header = { "Content-Type" : "application/json" , "Accept" : "application/json" , "token" : "1231" } re = requests.post( self .url,data = body,headers = header,verify = False ) code = re.status_code print (re.text,re.status_code) # 断言 self .assertEqual( int (status), int (code)) def tearDown( self ): print ( 'tearDown' ) if __name__ = = '__main__' : unittest.main() |
以上代码大家可以本地测试下,感谢同学们的学习和对开心学习网的支持。
原文链接:https://www.cnblogs.com/shenh/p/10412685.html
您可能感兴趣
- pythondjango工作机制(Python后台开发Django会话控制的实现)
- python中encode中文自定义编码(详解Python解决抓取内容乱码问题decode和encode解码)
- pythontkinter项目界面(python Tkinter版学生管理系统)
- python关闭程序强制退出线程(python多线程调用exit无法退出的解决方法)
- python抽奖代码教程(python实现抽奖小程序)
- python3.7.2 详细安装教程(python3.5安装python3-tk详解)
- python图形绘制教程(python绘制漏斗图步骤详解)
- python爬虫出租屋(python爬虫租房信息在地图上显示的方法)
- python中if的条件语句(浅谈Python的条件判断语句if/else语句)
- 浅谈Python3中strip()、lstrip()、rstrip()用法详解(浅谈Python3中strip、lstrip、rstrip用法详解)
- pythonyield有什么用(彻底理解Python中的yield关键字)
- python的基本函数及用法(Python3.6.x中内置函数总结及讲解)
- python实例之pyqt5多窗口实现(python+pyqt5编写md5生成器)
- python数字形式转换详解(Python3.5实现的罗马数字转换成整数功能示例)
- 如何去阿里云解析域名(利用Python+阿里云实现DDNS动态域名解析的方法)
- python和java的共同语法(Python和Java的语法对比分析语法简洁上python的确完美胜出)
- 800壮士拼死拖住30万日军 八佰 的真实历史,誓与阵地共存亡(800壮士拼死拖住30万日军)
- 演员陈创,火于 哮天犬 ,颠峰于 福贵 ,现状却令人唏嘘(演员陈创火于哮天犬)
- 幼小衔接-20以内看图读数 写数 数的组成练习题(幼小衔接-20以内看图读数)
- 你只要花上20天记单词,英语成绩就能从57提到100(你只要花上20天记单词)
- 夕云天际飞,亢龙化太极(夕云天际飞亢龙化太极)
- 爱情可以当饭吃吗(怎么回复)
热门推荐
- dedecms标签调用大全(织梦cms图集{dede:field name='imgurls'}显示栏目名称)
- jscanvas画折线图(js+canvas实现代码雨效果)
- vuecli打包项目(使用vue-cli创建项目并webpack打包的操作方法)
- python 多进程的启动和停止(Python3.5多进程原理与用法实例分析)
- flask快速开发框架(手把手教你使用Flask搭建ES搜索引擎预备篇)
- php代码打包环境加密(php实现对文件压缩简单的方法)
- docker容器映射到宿主机器(在宿主机上执行docker容器内部的shell或程序方式)
- python进程管理教程(Python I/O与进程的详细讲解)
- vue element 权限管理(Vue Element前端应用开发之功能点管理及权限控制)
- extjs checkboxGroup 复选框的用法
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9