Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python单元测试类型错误_Python_Python 3.x_Python Unittest - Fatal编程技术网

Python单元测试类型错误

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.

试图用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.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)