Rob*_*ley 2 python django unit-testing factory-boy python-unittest
我正在使用 Django 测试运行程序来运行我的单元测试。其中一些测试使用工厂在我的本地系统上创建大量文件。它们都有一个可检测的名称,并且可以相当容易地删除。
我试图避免
我编写了一个小型管理命令,用于删除符合预期约定的文件。有没有办法让测试运行程序call_command在完成整个测试套件后运行(而不仅仅是在特定测试的tearDown或方法中)?tearDownClass
因此,我们最终要做的是通过将以下行添加到 settings.py 来创建自定义测试运行器:
TEST_RUNNER = 'myapp.test_runner.MyTestRunner'
Run Code Online (Sandbox Code Playgroud)
然后在测试运行程序中,我们从继承自现有 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)
Run Code Online (Sandbox Code Playgroud)
该方法在测试方法的拆卸时被调用,并且似乎是确保它在最后被调用一次并且仅被调用一次的好地方。
| 归档时间: |
|
| 查看次数: |
1476 次 |
| 最近记录: |