Python Unittest:缺少TypeError:__ init __()

时间:2017-08-25 17:15:13

标签: python unit-testing

我对Python中的单元测试很新。我正在为一个非常小的方法编写单元测试。代码实现如下。但是,如果我运行测试脚本,我会收到错误消息:

  

TypeError:__init__()缺少4个必需的位置参数:'x,'y','z','w'

class get_result():
    def __init__(self,x,y,z,w):
        self.x=x
        self.y=y
        self.z=z
        self.w=w


    def generate_result(self):
        curr_x= 90
        dist= curr_x-self.x
        return dist


import unittest
from sample import get_result
result = get_result()

class Test(unittest.TestCase):

    def test_generate_result(self):
        self.assertEqual(somevalue, result.generate_result())

2 个答案:

答案 0 :(得分:2)

result = get_result()应为result = get_result(xvalue,yvalue,zvalue,wvalue)

这些值==某个数字。或者PRMoureu建议您可以在声明__init__()方法时将其作为可选参数。

答案 1 :(得分:0)

您的__init__方法需要 4个参数,未提供时会引发错误。

如果您想支持可选位置参数,您可以按如下方式定义init: __init__(self, *args, **kwargs)然后在函数内处理它们。请注意,如果未提供,则仍会创建对象,如果您未验证值存在,则会在代码的稍后阶段遇到错误。您可以捕获此异常并打印更易读的错误:

>>> class GetResult():
    def __init__(self, *args, **kwargs):
        if len(args) < 4:
            raise Exception('one or more required parameters x, y, w, z is missing')
.. rest code here

>>> g = GetResult()

Traceback (most recent call last):
  File "<pyshell#87>", line 1, in <module>
    g = GetResult()
  File "<pyshell#86>", line 4, in __init__
    raise Exception('one or more required parameters x, y, w, z is missing')
Exception: one or more required parameters x, y, w, z is missing