在Django中测试信号的基础知识

时间:2015-03-25 19:56:56

标签: python django testing django-testing

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

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

我的代码如下所示:

@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

我该如何处理?我只是创建一个预订并声明设置了正确的值吗?我是否单独测试此功能?我真的不知道如何开始。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

"我是否单独测试此功能" =>我不会这样做,信号框架与Django模型紧密耦合,为了获得隔离,你必须模拟很多库,使你的测试代码比测试代码本身困难得多