在测试运行结束时执行Django/unittest run命令

2024-04-26 18:50:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Django测试运行程序来运行我的单元测试。有些测试使用在本地系统上创建大量文件的工厂。它们都有一个可检测的名字,可以很容易地删除。在

我尽量不去做这两件事

  1. 保持文件删除cron作业运行
  2. 如果检测到我们正在测试,请更改自定义图像模型的代码以删除该文件。相反,我希望在测试运行结束时运行一次(并且只运行一次)命令来清理测试生成的所有文件。在

我写了一个小的管理命令,删除符合预期约定的文件。有没有一种方法可以让测试运行程序在完成整个测试套件后运行call_command(而不仅仅是在特定测试的tearDown或{}方法中)?在


Tags: 文件django方法模型图像命令程序工厂
3条回答

我们这样做是为了创建一个自定义的亚军测试来结束的设置.py公司名称:

TEST_RUNNER = 'myapp.test_runner.MyTestRunner'

然后在testrunner中,我们从继承自现有juno test runner的测试运行程序的“teardown_test_environment”方法中删除图像。在

^{pr2}$

此方法在测试方法的分解时被调用,似乎是一个很好的地方,可以确保它在结束时被调用一次,而且只调用一次。在

您可以利用django测试运行程序命令测试的方式(参见https://docs.djangoproject.com/en/1.11/topics/testing/overview/#order-in-which-tests-are-executed

如果您的测试用例是从django的TestCase类继承的,那么您可以创建一个直接继承自的虚拟清理测试用例unittest.TestCase. 测试运行程序将最后执行,您可以在那里进行清理。在

但是,如果django开发人员决定对测试顺序进行更改,这将中断。在

如果您创建一个服务.py与在同一文件夹中的文件模型.py,可以将清理代码放入其中,然后在保持其干燥的同时从管理命令和测试拆卸调用它。在

相关问题 更多 >