1

モデル フィールドのデフォルトがNoneで、複雑なアクションの後にメソッドがフィールドを に変更するとしNoneます。

テストの最後にassertEqual、フィールドはNone期待どおりです。メソッドが黙って失敗し、それNoneがメソッドのアクションの結果ではなく単なる偶然だったとしたら?

テストの開始時に別の値を設定することなく、モデル フィールドの変更を判断する方法はありますか?

私の場合、それはForeignKey別のパッケージからの複雑なオブジェクトへのフィールドになります。

これについて最善の方法は何ですか?

4

1 に答える 1

0

この質問はかなり前から開かれており、もう回答が必要かどうかはわかりませんが、昨日別のことを検索しているときに見つけたので、今は自由な時間があります...

私は専門家ではなく、実際には特定のニーズに応えないかもしれませんが、モックライブラリが必要なようです。Michael Foord のMockはお気に入りの 1 つです。

次のように、デコレータまたはコンテキスト マネージャとして使用mock.patchして、テストしようとしている属性をモックすることができます。

def test_attribute_is_being_set_to_none():
    mocked_attribute = mock.PropertyMock()
    with mock.patch('MyModule.MyClass.attribute_to_mock', mocked_attribute)
        MyObject = MyClass()
        MyObject.method()

    p.assert_called_with(None)

これは、テストNone中に属性が設定されたかどうかをテストすることになっています。より厳格にassert_called_once_with(None)したい場合は、オブジェクトがメソッド中に一度だけ設定されたかどうかを確認するために使用できます。

デコレーターやコンテキストマネージャーを使用して、属性、名前空間をモックすることでいくつかの問題に遭遇するかもしれません...それは多くのことに依存しますが、私はモックがここに行く方法であると確信しています.

于 2013-03-28T14:08:19.360 に答える