前面unittest篇,我们介绍了一些unittest框架的一些基本使用,包含TestCase编写、TestSuite、用例跳过、TestFixture、
断言详解等等。在测试过程中,我们知道用例都是需要入参的,但实际过程中,我们的函数体是一样的,只有入参不一样。
简单来说->以登录注册接口为例,登录账号入参,密码入参都是需要传入登录接口进行校验的。如果我们登录账号,密码有10种组合,按照传统用例思维,是不是需要写十个方法,并且会有很多重复的代码。那么我们可以通过unittest的ddt模块,进行数据驱动。只需要写一个方法,传递不同的参数即可满足如上的需求;
输入M组数据,框架会自动构造出M个测试用例,在测试结果中把每一个测试用例运行的结果单独展示出来。python中最常用,最有效的数据驱动是DDT。
pip install ddt
import requests
import json
url = 'http://api.juheapi.com/japi/toh'
data = {
"key":"7486da7f50cd55e6774fb3311b526d8a",
"v":'1.0',
"month":1,
"day":25
}
res = requests.post(url=url,data=data)
print(res.json())
import unittest
import ddt
import requests
# 测试数据,可以以列表中嵌套字典的形式,一个字典就是一个入参
Testdata = [
{
"month":1,"day":25},
{
"month":1,"day":26},
{
"month":1,"day":27},
{
"month":1,"day":28}
]
# 测试类前面需要加上@ddt.ddt
@ddt.ddt
class TestDttDemo(unittest.TestCase):
def setUp(self) -> None:
print('开始')
def tearDown(self) -> None:
print('结束')
# 测试方法前面需要加上@ddt.dada()括号里面填入测试数据
@ddt.data(*Testdata)
def test_Api(self,testdata): # testdata代表传入进来的每一条参数
url = 'http://api.juheapi.com/japi/toh'
data = {
"key": "7486da7f50cd55e6774fb3311b526d8a",
"v": '1.0',
"month": testdata["month"],
"day": testdata["day"]
}
response = requests.post(url=url,data=data)
print(response.json())
if __name__ == '__main__':
unittest.main()
ps :
1、后续内容继续深入unittest的学习;
2、有什么问题,欢迎大家评论区评论交流!谢谢大家!
3、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !