在测试用例中,无法捕获Django的pre_save信号

5 投票
1 回答
2162 浏览
提问于 2025-04-16 19:10

在Django中,我的代码可以正常捕捉到pre_save信号。但是,在tests.py中的测试用例里,信号处理器却收不到任何信息。这可能是什么原因呢?

  • 看起来我的测试用例和信号处理器是在不同的应用里。这会是问题的原因吗?

1 个回答

5

看起来我的测试用例和信号处理程序在不同的应用里。这会是问题的原因吗?

是的。每个应用的 tests.py 文件都是独立的。你需要在测试中引入你的信号注册代码,或者手动在某个地方连接它们,以确保它们能够接收到信号:

你可以把信号处理和注册代码放在任何你想要的地方。不过,你需要确保这个模块在早期就被引入,这样信号处理才能在需要发送信号之前就注册好。

(来源:监听信号,连接接收函数.)

撰写回答