我试图使用Python的unittest模块来比较结果和期望值,并最终获得测试统计数据。但是,下面的示例代码给出了以下错误:
File "...", line 16, in <module>
run_tests.test_equal()
File "...", line 13, in test_equal
self.assertEqual(self.result, self.expected)
File "/usr/lib/python2.7/unittest/case.py", line 512, in assertEqual
assertion_func = self._getAssertEqualityFunc(first, second)
File "/usr/lib/python2.7/unittest/case.py", line 493, in _getAssertEqualityFunc
asserter = self._type_equality_funcs.get(type(first))
AttributeError: 'RunTests' object has no attribute '_type_equality_funcs'示例代码:
import unittest
class RunTests(unittest.TestCase):
def __init__(self, result, expected):
self.result = result
self.expected = expected
def runTest(self):
test_equal(self)
def test_equal(self):
self.assertEqual(self.result, self.expected)
run_tests = RunTests(9, 9)
run_tests.test_equal()
if __name__ == '__main__':
unittest.main()如何在不同的输入值上使用模块的比较函数?我找到了这个职位,但问题似乎不一样。
提前谢谢。
发布于 2018-09-17 14:10:10
您跳过了在您的__init__中调用基类的RunTests.__init__,它负责定义_type_equality_funcs。
def __init__(self, result, expected):
super().__init__()
self.result = result
self.expected = expected发布于 2018-09-17 14:31:40
您需要调用基类的__init__方法。这可能是有用的:
import unittest
class RunTests(unittest.TestCase):
def __init__(self, *args, **kwargs):
super(RunTests, self).__init__()
def runTest(self):
self.test_equal()
def test_equal(self):
self.assertEqual(9, 9)
run_tests = RunTests()
run_tests.test_equal()
if __name__ == '__main__':
unittest.main() https://stackoverflow.com/questions/52369509
复制相似问题