假設模型字段默認爲None
,並且某個複雜操作之後的方法預計會將該字段更改爲None
。Django - 測試模型字段更改
在測試結束時,我按照預期做了assertEqual
並且字段是None
。如果方法失敗並且None
不是該方法的結果,而只是一個巧合,該怎麼辦?
有沒有辦法確定模型字段的變化,而不必在測試開始時設置不同的值?
在我的情況下,它將是一個ForeignKey
字段從一個複雜的對象從另一個包。
什麼是最好的方式去做這件事?
假設模型字段默認爲None
,並且某個複雜操作之後的方法預計會將該字段更改爲None
。Django - 測試模型字段更改
在測試結束時,我按照預期做了assertEqual
並且字段是None
。如果方法失敗並且None
不是該方法的結果,而只是一個巧合,該怎麼辦?
有沒有辦法確定模型字段的變化,而不必在測試開始時設置不同的值?
在我的情況下,它將是一個ForeignKey
字段從一個複雜的對象從另一個包。
什麼是最好的方式去做這件事?
這個問題已經開了一段時間,我不知道你甚至需要一個答案了,但我發現它,而尋找別的昨天,我得到了現在一些空閒時間,所以...
我不是專家,它可能並不能滿足您的特定需求,但在我看來,您需要一個嘲弄的圖書館。 Michael Foord的Mock是最受歡迎的作品之一。
你可以做的是使用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)
來查看該方法期間是否僅設置了一次對象。
使用裝飾器或上下文管理器嘲諷屬性,名稱空間,這可能會遇到一些麻煩......這取決於很多事情,但我很確定嘲笑是要走到這裏的方法。