Python单元测试类型错误
试图用Python构建一个unittest,但我得到了这个类型错误,它说它忽略了所需的潜在参数。 我尝试了所有方法,最终得到以下代码:Python单元测试类型错误,python,python-3.x,python-unittest,Python,Python 3.x,Python Unittest,试图用Python构建一个unittest,但我得到了这个类型错误,它说它忽略了所需的潜在参数。 我尝试了所有方法,最终得到以下代码: import unittest from MyCosine import CosineSim, CosineDis class TestMyCosine(unittest.TestCase): x = [3.5 , 3 , 3.5 , 2.5 , 3] y = [3.5 , 3 , 4 , 2.5 , 4.5] result = 0.
import unittest
from MyCosine import CosineSim, CosineDis
class TestMyCosine(unittest.TestCase):
x = [3.5 , 3 , 3.5 , 2.5 , 3]
y = [3.5 , 3 , 4 , 2.5 , 4.5]
result = 0.9865867
def testCosineSim(self, result, x, y):
self.x = x
self.y = y
self.result = result
self.assertEqual(CosineSim(x,y), result, "0.9865867" )
def testCosineDis(self, result, x, y):
self.x = x
self.y = y
self.result = result
self.assertEqual(CosineDis(x,y) , result, "0.9865867")
if __name__ == '__main__':
unittest.main(exit=False)
这是错误消息:
======================================================================
ERROR: testCosineDis (__main__.TestMyCosine)
----------------------------------------------------------------------
TypeError: testCosineDis() missing 3 required positional arguments: 'result', 'x', and 'y'
======================================================================
ERROR: testCosineSim (__main__.TestMyCosine)
----------------------------------------------------------------------
TypeError: testCosineSim() missing 3 required positional arguments: 'result', 'x', and 'y'
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (errors=2)
这是实际功能之一:
def CosineDis(x,y):
result = 1 - distance.cosine(x, y)
return result
这是因为您创建的变量将自动传递给TestCase。 一种解决方案是手动传递参数。或者您可以使用类似的解决方案:
从参数化导入参数化
类TestSequence(unittest.TestCase):
@参数化.expand([
[0.9865867, 3.5, 3.5],
[0.9865867, 3, 3],
])
def testcosisim(self、result、x、y):
self.assertEqual(余弦(x,y),结果)
定义x
和使用x
作为输入参数的范围不同。
由于您似乎希望使用x、y和result的静态值,我们可以将它们放在setUp()
中,在调用任何测试方法之前,哪个单元测试将检测并运行
在手机上快速编辑(尚未测试):
你认为向这些方法传递参数是什么?正确,你甚至不需要这些参数。这非常有效,谢谢。我的测试失败:)因为余弦函数返回这个值“0.986586764527925”,而我只检查逗号后的七位。@H35am我很高兴这有帮助。
import unittest
from MyCosine import CosineSim, CosineDis
class TestMyCosine(unittest.TestCase):
def setUp(self) :
self.x = [3.5 , 3 , 3.5 , 2.5 , 3]
self.y = [3.5 , 3 , 4 , 2.5 , 4.5]
self.result = 0.9865867
def testCosineSim(self):
self.assertEqual(CosineSim(self.x,self.y), self.result, "0.9865867" )
def testCosineDis(self):
self.assertEqual(CosineDis(self.x,self.y) , self.result, "0.9865867")
if __name__ == '__main__':
unittest.main(exit=False)