最も簡単な方法:Python:オブジェクトが異なる場所にあるかどうかをチェックするユニットテスト?この1説明する
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
を持っていますこれは私が得る出力されます: 偽 、それはテストに合格言います。 first_element.attributeがsecond_element.attributeと等しくないため、渡すべきではありません。さらに、are_elements_equal
の場合はreturn false
であっても、テストは引き続き行われます。
要素をどのように表示することができますか?オブジェクトの初期化によって異なるプロパティ/属性が作成される可能性があります。あなたは正しいですが、assertEqualは本質的にオブジェクトが同じかどうかを判断するのに十分な '=='チェックを行います:[似たような質問](https://stackoverflow.com/questions/1227121/compare-object-instances-for -pythonでの属性の等価性)。また、独自の_eq_()メソッドを作成して、Python 2.5以上を使用しているかどうかを確認することもできます。 – ajoseps
[addTypeEqualityFunc](https://docs.python.org/2/library/unittest.html)を作成することもできます#unittest.TestCase.addTypeEqualityFunc) – ajoseps
@ajoseps編集を確認してください – BUInvent