所以这是我的代码:
import unittest
class Primes:
@staticmethod
def first(n):
<python code here>
class Test(unittest.TestCase):
def __init__(self):
pass
def assert_equals(self, l, m):
self.assertEqual(l, m)
Test = Test()
Test.assert_equals(Primes.first(1), [2])
每当我运行我的代码时,都会收到以下错误:
Traceback (most recent call last):
File "firstNPrimes.py", line 37, in <module>
Test.assert_equals(Primes.first(1), [2])
File "firstNPrimes.py", line 34, in assert_equals
self.assertEqual(l, m)
File "/usr/lib/python3.4/unittest/case.py", line 796, in assertEqual
assertion_func = self._getAssertEqualityFunc(first, second)
File "/usr/lib/python3.4/unittest/case.py", line 777, in _getAssertEqualityFunc
asserter = self._type_equality_funcs.get(type(first))
AttributeError: 'Test' object has no attribute '_type_equality_funcs'
我不明白这里的问题是什么。
答案 0 :(得分:0)
您的方法对我来说很好,并且模仿我在帮助函数提供的示例代码中看到的内容。
导入unittest 帮助(单元测试)
我在使用python 2.7环境中的虚拟框中使用debs构建时遇到了同样的问题。由于某种原因,只有assertEqual方法存在问题。 assertAlmostEqual(科学断言相等),assertSequenceEqual,assertItemEqual等都没有问题。
由于您是unittestingTestCase的子类,因此您定义的类继承unittest.TestCase类的所有方法,包括assertEqual方法。
我的代码可以运行(从python 2.7的命令行):
将testing_code导入为t
test_object = t.Test()
t.assertSequenceEqual([4,5,6],[4,5,6])
t.assertNotEqual(4,7)
并没有问题......我尝试使用简单的assertEqual方法时遇到同样的错误。我不认为这是一个代码结构/滥用unittest问题,我很确定这是一个环境/构建问题。我决定在课堂上需要一个断言相等的方法,所以我只做了一个简单的方法:
def AssertEqual(self, a, b):
if a!=b:
msg= 'inputs unequal: a, b:', a, b
raise ValueError, msg