Python Unittest:TypeError:\uu init_u9()丢失

2024-03-28 20:29:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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

TypeError: __init__() missing 4 required positional arguments: '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())

Tags: 方法代码importselfgetinitdistdef
2条回答

result = get_result()应该是result = get_result(xvalue,yvalue,zvalue,wvalue)

其中这些值==某个数字。或者按照PRMoureu的建议,可以在__init__()方法的声明中使它们成为可选参数。在

您的__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

相关问题 更多 >