使用python+unittest实现接口自动化,在数据驱动,使用ddt时,提示“TypeError: test_add_department_1() missing 3 required positional arguments: 'req_data', 'res_key', and 'res_value'”。
代码如下:
import unittest
import requests
import json
from config.ProjectConfig import ETConfig
from testcase.data.DepartmentData import ADD_DATA
from ddt import ddt,data,unpack
from common.wrapers import *
#这里竟然可以只导入一个对象
from common.HttpReq import HttpReq
class AddDepartmentTest(unittest.TestCase):
"""添加学院信息"""
def setUp(self):
pass
self.url =ETConfig.url
@data(ADD_DATA['test_add_department_001'])
@unpack
@write_case_log()
def test_add_department_1(self,req_data,res_key,res_value):
print(req_data,res_key,res_value)
# data = {
# "data": [
# {
# "dep_id": "T",
# "dep_name": "T",
# "master_name": "T",
# "slogan": "H"
#
# }
# ]
# }
# r=requests.post(self.url,data)
# r=HttpReq.post(self,url=self.url,data=req_data)
# # print("状态码为:"+r)
# print("响应文本为:"+r.text)
# r=json.loads(r.text)
# self.assertEqual(r[res_key]['count'],res_value)
# print("{}执行成功".format(self._testMethodName))
if __name__ == '__main__':
# unittest.main()
suite=unittest.TestSuite()
suite.addTest(AddDepartmentTest("test_add_department_1"))
runner=unittest.TextTestResult()
test_result=runner.run(suite)
这里明明报错,说明没识别到传进去的三个参数。
解决办法:应该在测试类前面使用@ddt,解决。
这里是因为看了一个教程,教程上只写了在测试用例前需要加装饰,没写在测试类前也需要,导致出现问题。