我有以下自定义管理命令:
from django.template.loader import render_to_string
from django.core.management.base import BaseCommand
class Command(BaseCommand):
args = ""
help = """Validates models."""
def handle(self, *args, **options):
...
message = render_to_string(
"validation_email.html",
context
)
...
当我从命令行运行它时,它可以正常工作而没有问题。但是,当我尝试使用以下测试用例进行测试时:
from io import StringIO
from django.core import mail
from django.core.management import call_command
from django.test import TestCase
from my_app.management.commands import validate_models
class TestValidateModels(TestCase):
def test_successful_call(self):
out = StringIO()
cmd = validate_models.Command()
call_command(cmd, stdout=out)
self.assertEqual(len(mail.outbox), 1)
它给我以下错误:
django.template.exceptions.TemplateDoesNotExist: validation_email.html
我想念什么吗?为什么命令在命令行上可以正常工作,但是在运行单元测试时却产生模板问题?模板是否需要进行任何调整才能测试Django自定义管理命令?