我对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())
答案 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