str对象不可用于unittest

时间:2011-06-22 12:38:33

标签: python python-3.x testing

我写了一个显示错误的测试用例

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”

它有效

但我仍然无法准确地指出它 可能是什么原因?

2 个答案:

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