gpt4 book ai didi

python - Django/unittest 在测试运行程序末尾运行命令

转载 作者:行者123 更新时间:2023-12-02 03:46:28 33 4
gpt4 key购买 nike

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

我试图避免这样做

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

我编写了一个小型管理命令,用于删除符合预期约定的文件。有没有办法让测试运行程序在完成整个测试套件后运行 call_command (而不仅仅是在 tearDowntearDownClass 中)特定测试的方法)?

最佳答案

因此,我们最终所做的就是通过将以下行添加到 settings.py 来创建自定义测试运行程序:

TEST_RUNNER = 'myapp.test_runner.MyTestRunner'

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

import os                                                                                  
import shutil

from django.conf import settings
from junorunner.testrunner import TestSuiteRunner


class MyTestRunner(TestSuiteRunner):

def teardown_test_environment(self, *args, **kwargs):
# Remove test-created media files
if all([
os.path.isdir(settings.MEDIA_ROOT),
'test' in settings.MEDIA_ROOT,
]):
shutil.rmtree(settings.MEDIA_ROOT)
super(MyTestRunner, self).teardown_test_environment(*args, **kwargs)

此方法在测试方法的拆卸时调用,似乎是确保它在最后调用一次且仅调用一次的好地方。

关于python - Django/unittest 在测试运行程序末尾运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571485/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com