python unittest测试__init__()需要两个参数?

发布于 2022-09-11 18:48:51 字数 1650 浏览 18 评论 0

python unittest测试的时候遇到了个问题, 在测试用例中的setUp()方法中我导入了自定义的Interface类,
然后在运行测试用例的时候遇到了个错误说:

__init__() missing 2 required positional arguments: 'url' and 'method'

req.py

import requests
import json

class InterFace:
    def __init__(self, url, method, data=None):
      self.res = self.call_method(url, method, data)

    def send_get(self, url, data):
        res = requests.get(url).json()
        return json.dumps(res, indent=2, sort_keys=True)

    def send_post(self, url, data):
        res = requests.post(url, data).json()
        return json.dumps(res, indent=2, sort_keys=True)

    def call_method(self, url, method, data=None):
        result = None
        if method == 'GET':
            result = self.send_get(url, data)
        else:
            result = self.send_post(url, data)
        return result

if __name__ == '__main__':
    url = 'xxx'
    
    run = InterFace(url, 'GET')
    print(run.res)

test.py

import unittest
from req import InterFace

class TestMethod(unittest.TestCase):
    def setUp(self):
        self.run = InterFace()

    def test_one(self):
        url = 'xxx1111'
        data = {
            'mobile': '12345678978',
            'password': '123456'
        }
        res = self.run.call_method(url, 'POST', data)
        self.assertEqual(res['code'], 1000, '测试通过')

    def test_two(self):
        url = 'xxx'
        res = self.run.call_method(url, 'POST')
        self.assertEqual(res['status'], 0, '测试通过')

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

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

执笔绘流年 2022-09-18 18:48:51

注释掉req.py的__init__()和_if __name__ == '__main__'方法,
然后执行python test.py

如果返回的res是json类型, 必须用json.loads()进行转换:

self.assertEqual(json.loads(res)['code], '200', '测试通过') 
苄①跕圉湢 2022-09-18 18:48:51

test.py第7行

self.run = InterFace()

而你的原型是

def __init__(self, url, method, data=None):

所以你缺了两个位置参数urlmethod

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文