unittest做接口自动化单文件时,遇到这个问题:TypeError: addTest() missing 1 required positional argument: 'test'
浪费了好多时间定位解决,所以分享出来,免的大家也浪费时间在这小事上面。
import json
import requests
import unittest
# from requests_demo.demo04 import RunMain
class RunMain:
def send_post(self, url, data):# 定义一个方法,传入需要的参数url和data
# 参数必须按照url、data顺序传入
result = requests.post(url=url, data=data).json()# 因为这里要封装post方法,所以这里的url和data值不能写死
res = json.dumps(result,ensure_ascii=False,sort_keys=True,indent=2)
return res
# print res
def send_get(self, url, data):
result = requests.get(url=url, data=data)
res = json.dumps(result,ensure_ascii=False,sort_keys=True,indent=2)
return res
def run_main(self, method, url=None, data=None):
result =None
if method =='post':
result =self.send_post(url, data)
elif method =='get':
result =self.send_get(url, data)
else:
print("错误!!!!!!!!!")
return result
class TestRun(unittest.TestCase):
def setUp(self):
self.run_main1 = RunMain()# 测试用例必须以test开头
def tearDown(self):
pass
def test_01(self):
url ='http://admin/login'
data = {
"username":"tesM",
"password":"1567657",
}
res =self.run_main1.run_main('post', url, data)
res = json.loads(res)
self.assertEqual(res['code'], 0)
if __name__ =='__main__':
# 实例化TestSuite创建测试套件
suite = unittest.TestSuite
# 把用例test_01添加到测试套件中
suite.addTest(TestRun("test_01"))
# run()方法是运行测试套件的测试用例,入参为suite测试套件。
# unittest.TextTestRunner().run(suite)
runner = unittest.TextTestRunner()
runner.run(suite)
原因是: suite = unittest.TestSuite 后面缺少一个括号。
或者unittest.TextTestRunner 后面缺少括号。
加上括号就好了。