【问题标题】:Basics of testing signals in Django在 Django 中测试信号的基础知识
【发布时间】:2015-05-29 16:40:06
【问题描述】:

我是在 Django 中进行测试的新手,我想知道如何为 signals 编写测试。
我查看了文档,但找不到任何有用的信息。

假设pre_save 模型有一个简单的pre_save 信号,我想在将其保存到数据库之前更改一些属性。

我的代码如下所示:

@receiver(pre_save, sender=Reservation)
def set_destination_type(sender, instance, *args, **kwargs):
    points = ['New York', 'Rome', 'Paris']
    if instance.destination in points:
        instance.international = True
    instance.international = False

我将如何处理这个问题?我是否只是创建一个保留并断言设置了正确的值?我是否单独测试此功能?我真的不知道如何开始。

谢谢!

【问题讨论】:

    标签: python django testing django-testing


    【解决方案1】:

    最简单的方法确实是创建一些保留(其中一些以点为单位有目的地,而另一些则没有),将目的地设置为“foo”(例如)然后保存它们。

    international 似乎是一个布尔字段,因此使用“foo”(它不是布尔值)和保存将允许您检查两种情况(并且只要实例未验证/保存,您可以分配您想要的任何值)

    “我是否单独测试这个函数” => 我不会那样做,信号框架与 Django 模型高度耦合,为了获得隔离,你必须模拟很多库,使你的测试代码更多比测试代码本身难

    【讨论】:

    • 这似乎是最好的选择.. 谢谢
    • 这是一个非常古老的问题,但目前这不再是正确的答案,有几种方法可以防止单元测试由于信号而(无声地)成为集成测试。有兴趣的可以看看thisthis
    猜你喜欢
    • 2012-06-08
    • 2010-09-26
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2018-05-25
    • 2014-11-28
    相关资源
    最近更新 更多