最简单的解释是:
import unittest
from element import Element
class TestHTMLGen(unittest.TestCase):
def test_Element(self):
page = Element("html", el_id=False)
self.assertEqual(page, Element("html", el_id=False)) # this is where I need help
我收到了以下错误信息:
AssertionError: <element.Element object at 0x025C1B70> != <element.Element object at 0x025C1CB0>
我知道这两个对象并不完全相同,但有没有办法检查它们是否相等?我认为assertEqual会起作用。
编辑:我正在使用addTypeEqualityFunc。然而,我仍然遇到了问题。
def test_Element(self):
page = Element("html", el_id=False)
self.addTypeEqualityFunc(Element, self.are_elements_equal)
self.assertEqual(page, Element("html", el_id=False))
def are_elements_equal(self, first_element, second_element, msg=None):
print first_element.attribute == second_element.attribute
return type(first_element) is type(second_element) and first_element.tag == second_element.tag and first_element.attribute == second_element.attribute
这是我得到的输出结果: False 并且它显示测试通过了。但事实上,第一个元素的属性值并不等于第二个元素的属性值,因此测试不应该通过。此外,即使我在
are_elements_equal
中只返回false
,测试仍然会通过。
==
检查,这应该足以确定对象是否相同:类似的问题。如果你使用的是Python 2.5或更高版本,你也可以创建自己的_eq_()方法来检查相等性。 - ajoseps当检测到前两个参数之间的不等式时,它必须引发self.failureException(msg) - 可能在错误消息中提供有用的信息并详细解释不等式。
- ajoseps