python - Python unittest TypeError
问题描述
试图在 Python 中构建一个单元测试,但我得到了这个 TypeError,它说它错过了所需的潜在参数。我已经尝试了一切,并在这里得到了这段代码:
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
解决方案
您定义的位置x
和用作x
输入参数的位置的范围是不一样的。由于您似乎想对 x、y 和结果使用静态值,我们可以将它们放在setUp()
单元测试将在调用任何测试方法之前检测和运行的位置。
手机快速编辑(未测试):
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)
推荐阅读
- reactjs - 我正在尝试找出如何获得固定视口而不管设备
- spring-boot - 是否可以从 Spring Boot 流式传输视频并通过获取来使用它?
- mysql - MySql:2个或更多表可以使用相同的主键吗?
- flutter - 使用 Path Flutter 绘画
- java - 将作业调度到 Java 外部依赖项中
- java - 使用 servlet 连接 JDBC 时找不到类 com.mysql.jdbc.driver
- c++ - 无法将右值 std::array 转换为 std::span
- apache-kafka - @transactional 如何在 Kafka Consumer 中工作
- c# - 将 Bot Framework Bot 用作 Azure Web App 突然没有配置更改命中 SecurityTokenSignatureKeyNotFoundException: IDX10501
- node.js - 使用 React 和 NodeJs 上传文件不传输数据