Unittest做接口自动化实现ddt(一)

前言:一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向、逆向等多种组合。所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别。这个时候就可以利用ddt来管理测试数据,提高代码复用率。

直接撸代码:

import unittest
import ddt
import requests

# 接口参数,用列表[]包裹起来,每组数据则是单独的子列表(可迭代对象即可,如字典、列表),入参和断言分别用字典格式,则会形成一个子列表数据中存在一组入参以及对应一组断言数据;
test_data = [
	[{
		"identity": "18682236985",
		"password": "123456",
		"pid": "n6kwoCSe"
	},
		{"code": 200}], # code并不是接口需要的参数,是为了对返回结果进行断言而加在这里单独使用字典存放的预期结果
	[{
			"identity": "18682236985",
			"password": "",
			"pid": "n6kwoCSe"
		},
		{"code": 400}],
	[{
		"identity": "",
		"password": "123456",
		"pid": "n6kwoCSe"
	},
		{"code": 400}]
]

@ddt.ddt
class LoginTest(unittest.TestCase):
	"""CodeMao登录接口"""
	
	@classmethod
	def setUpClass(cls):
		cls.url = "https://api.codemao.cn/tiger/accounts/login"
	
	@ddt.data(*test_data)
	def test_login(self, value):  # 定义一个变量value来接收ddt.data中的数据
		r = requests.post(self.url, json=value[0])   # 每组数据value[0]才是真的入参数据
		print("接口响应状态码:%s" % r.status_code, "预期响应状态码:%s" % value[1]["code"])
		self.assertEqual(r.status_code, value[1]["code"])  # 每组数据value[1]则是断言字段

if __name__ == '__main__':
	unittest.main()

在这里插入图片描述
可以看到,虽然只写了一条用例,但是却执行了3次,根据传参不同,得到不同的结果,相当于3条用例;

我这里只是用了ddt.data,ddt还有其他的装饰方法,如:ddt.file_data、ddt.unpack,后面博客进行补充说明!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值