Django自定义管理命令测试上的TemplateDoesNotExist

时间:2019-09-13 22:03:06

标签: python django django-templates django-unittest

我有以下自定义管理命令:

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自定义管理命令?

0 个答案:

没有答案