Django 中测试信号的基础知识

Basics of testing signals in Django

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

假设 Reservation 模型有一个简单的 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

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

谢谢!

最简单的确实是创建一些预订(有些目的地有积分,有些没有),将目的地设置为 'foo'(例如)然后保存它们。

international 似乎是一个布尔值字段,因此使用 'foo'(这不是布尔值)并保存将允许您检查这两种情况(并且就实例而言不是 validated/saved可以分配任何你想要的值)

"Do I test this function in isolation" => 我不会那样做,信号框架与 Django 模型紧密耦合,要获得隔离,您将不得不模拟大量库,使您的测试代码比测试代码本身