如何在Unitest中轻松找到补丁目标?

发布于 2025-01-31 09:47:02 字数 1090 浏览 3 评论 0原文

我在django应用中具有以下模块结构:

subscriptions
   - api
     - views.py
     - serializers.py
     - tests
       test_some_view.py

   - models.py
   - signals.py

in models.py我有一个google> google> google playorder模型,in signal.py.py我有一个信号:

@receiver(post_save, sender=GooglePlayOrder)
def save_google_play_order(sender, instance, created, **kwargs):
   pass

Google Playorder是在serializer google playorderSerializer中创建的实例,来自api/serializers.py,该 由某些google> google> google> google> google> google playplayorderview <<<< /代码>在api/views.py中。

现在,我想从api/tests/test_some_view.py中运行测试,其中我想模拟save_google_play_play_order signal。

不幸的是,此实现不起作用,因为我(afaik)应该遵循修补某些内容的导入:

@patch('subscriptions.signals.save_google_play_order')
def test_normal(self, mock):

因此,在这种情况下,我应该如何理解我应该用作patch>补丁 decorator的目标?

I have the following module structure within a Django app:

subscriptions
   - api
     - views.py
     - serializers.py
     - tests
       test_some_view.py

   - models.py
   - signals.py

In models.py I have a GooglePlayOrder model, and in signals.py I have a signal:

@receiver(post_save, sender=GooglePlayOrder)
def save_google_play_order(sender, instance, created, **kwargs):
   pass

The GooglePlayOrder instance is being created in a serializer GooglePlayOrderSerializer from api/serializers.py, which is called by some GooglePlayOrderView in api/views.py.

And now I want to run a test from api/tests/test_some_view.py, where I want to mock the save_google_play_order signal.

Unfortunately, this implementation does not work, as I (AFAIK) should follow the imports for patching something:

@patch('subscriptions.signals.save_google_play_order')
def test_normal(self, mock):

So, how should I understand in this case what exactly I should use as a target of patch decorator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

童话里做英雄 2025-02-07 09:47:02

尝试使用模拟功能的位置。例如,如果您使用save_google_play_orderserializers.py中:

@patch('sisscriptions.apicriptions.api.serializers.save_google_play_play_pord_order')

Try where the mocked function is used. For example, if you use save_google_play_order in serializers.py:

@patch('subscriptions.api.serializers.save_google_play_order')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文