我写了一个显示错误的测试用例
from unittest import *
class MyTest(unittest.TestCase):
def test_add(self):
self.assertEquals(1,(2-1),"Sample Subraction Test")
if __name__ == '__main__':
unittest.main()
输出: Str对象不可调用
而不是 “来自unittest import *”我已经给出了 “import unittest”它有效
但我仍然无法准确地指出它 可能是什么原因?
答案 0 :(得分:3)
from ... import *
是危险的做法,只应在模块/包被设计和广告时使用,并且您有充分的理由这样做。
事实证明,unittest没有这样设计,当使用该方法时,会发现另外两个“测试用例”,但由于它们不是真正的测试用例,因此会产生问题。
正确的做法是:
import unittest
class MyTest(unittest.TestCase):
def test_subtraction(self):
self.assertEqual(1, (2-1), "Sample Subraction Test")
if __name__ == '__main__':
unittest.main()
在研究此问题时,我发现__all__
变量可以而且应该用于定义公共API - 它的存在并不表示支持from ... import *
。
答案 1 :(得分:-1)
我让它像这样工作。 覆盖runTest()方法,创建实例,运行test_add()
from unittest import TestCase
class MyTest(TestCase):
def runTest(self):
pass
def test_add(self):
self.assertEquals(1,(2-2),"Sample Subraction Test")
if __name__ == '__main__':
test = MyTest()
test.test_add()