一尘不染

如何直接从测试驱动程序调用自定义Django manage.py命令?

django

我想为对数据库表执行后端操作的Django manage.py命令编写单元测试。如何直接从代码中调用管理命令?

我不想从tests.py在操作系统的外壳上执行命令,因为我无法使用通过manage.py test设置的测试环境(测试数据库,测试虚拟电子邮件发件箱等)。


阅读 467

收藏
2020-03-30

共1个答案

一尘不染

测试这类事情的最佳方法-从命令本身提取所需功能到独立功能或类。它有助于从“命令执行内容”中提取内容并编写测试,而无其他要求。

但是,如果由于某种原因无法解耦逻辑形式的命令,则可以使用call_command方法从任何代码中调用它,如下所示:

from django.core.management import call_command

call_command('my_command', 'foo', bar='baz')
2020-03-30