【发布时间】:2016-04-16 04:15:10
【问题描述】:
这个问题不是上述问题的重复,我不是要求比较实例的方法,而是关于方法assertEqual,以及它的目的是什么。
assertEqual(a, b) 检查 a == b 并返回 True 或 False,
文档说,
测试第一个和第二个是否相等。如果值不比较 相等,测试将失败。
我在一个简单的类上使用assertEqual 运行三个测试,
正在测试的课程
class Car:
def __init__(self, name):
self.name = name
测试用例
class CarTest(unittest.TestCase):
def test_diff_equal(self):
car1 = Car('Ford')
car2 = Car('Hyundai')
self.assertEqual(car1, car2)
def test_name_equal(self):
car1 = Car('Ford')
car2 = Car('Ford')
self.assertEqual(car1, car2)
def test_instance_equal(self):
car1 = Car('Ford')
self.assertEqual(car1, car1)
结果是
F.F
======================================================================
FAIL: test_diff_equal (cartest.CarTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "cartest.py", line 10, in test_diff_equal
self.assertEqual(car1, car2)
AssertionError: <car.Car instance at 0x7f499ec12ef0> != <car.Car instance at 0x7f499ec12f38>
======================================================================
FAIL: test_name_equal (cartest.CarTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "cartest.py", line 15, in test_name_equal
self.assertEqual(car1, car2)
AssertionError: <car.Car instance at 0x7f499ec12fc8> != <car.Car instance at 0x7f499ec12f38>
----------------------------------------------------------------------
Ran 3 tests in 0.000s
FAILED (failures=2)
assertEqual 是否用于检查两个实例是否相同?或者我的设置有什么问题吗?为什么test_name_equal() 失败了?
【问题讨论】:
-
@Rogalski,不,不要挖掘旧帖子。它是专门关于 assertEqual 的。
-
这与比较对象如何实现相等运算符密切相关(您知道,因为您已经引用了说明的文档)。
-
@Rogalski 这个问题是关于内置单元测试模块及其提供的方法
assertEquals,提到的问题是关于比较两个实例。这些问题有什么关系?这个问题是关于 UNITTEST.ASSERTEQUAL :: -
@Rivadiz:不完全是,您的测试失败是因为您没有实现
__eq__方法。
标签: python unit-testing assert