我是 Django 和單元測驗的新手,所以任何反饋都非常有幫助。
我與第三方建立了一個小的集成,以便在我們的系統中創建帳戶時在他們的系統中創建一個匹配的帳戶。我在模型類中的信號上執行此操作。信號很簡單,如下所示:
@receiver(post_save, sender=Company)
def create_integration_company(sender, instance, created, **kwargs):
if created:
company_integration_id = third_party.create_crm_company(instance)
instance.integration_id = company_integration_id
instance.save()
當我運行我們的測驗時,它在這個第三方的系統中創建了數千個帳戶,所以我發現mock.
我們有一堆測驗可以創建公司,我想知道是否必須將其添加到每個測驗中? @mock.patch("apps.accounts.utils.build_request", return_value="123")
我的問題是:我應該在哪個級別模擬回應并回傳123新的集成 ID?我可以在模型級別做嗎?或者我是否必須為我們擁有的每個測驗用例執行此操作?
uj5u.com熱心網友回復:
模擬會起作用,但更好的選擇是斷開單元測驗的信號。有關如何斷開信號,請參閱https://docs.djangoproject.com/en/4.0/topics/signals/#disconnecting-signals。您可以創建一個僅用于測驗的 mixin,您可以將其包含在您的測驗套件中。理想情況下,您可以在 mixin 的 init 或 setUpClass 中執行此操作。假設 mixin 是 SignalDisconnector,您將使用它:
class TestSuite(TestCase, SignalDisconnector)
這只會測驗您在測驗套件中想要的行為,而不會遇到任何副作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/385178.html
