web-dev-qa-db-ja.com

unittestでassertTrue(==)とassertEqualを使用する

Python unittestモジュールで、次の場合にassertTrue()assertEqual()を使用することの長所または短所はありますか?

self.assertTrue(a == b)
self.assertEqual(a, b)
9
jersey bean

失敗出力をカスタマイズするため、常にassertEqual()を使用してください。

メソッドはさまざまなヘルパーメソッドに委任して、たとえば、両方の引数のタイプが一致し、タイプ固有のヘルパーメソッドが登録されている場合、アサーションが失敗したときに2つの文字列または2つのリストがどのように異なるかを示します。

assertTrue()は、アサーションが失敗したことのみを通知でき、理由は表示できません。

assertEqual()ドキュメント から:

さらに、firstsecondがまったく同じタイプで1つである場合listTupledictsetfrozensetstr、またはサブクラスが登録する任意の型addTypeEqualityFunc()より有用なデフォルトのエラーメッセージを生成するために、型固有の等価関数が呼び出されます( 型固有のメソッドのリスト も参照)。

利用可能な特定のアサーションがない場合にのみ、assertTrue()を使用してください。

15
Martijn Pieters

AssertEqualsよりassertTrueを好む場合があります。たとえばassertTrue(user.hasAdminRole())のようなブール結果を確認したい場合

ただし、別のタイプの値を確認する場合は、assertEqualsを使用して意味のあるエラーメッセージを取得する必要があります。また、私の意見では読みやすく、どの部分が期待されるか、どの部分が値に対してどの部分をチェックするかを定義します。

0
snap