如果你的任何 Django 视图使用 Django 的邮件功能 发送电子邮件,你可能不想每次使用该视图运行测试时都发送电子邮件。出于这个原因,Django 的测试运行器会自动将所有 Django 发送的邮件重定向到一个虚拟的发件箱。这让你可以测试发送邮件的每一个方面——从发送邮件的数量到每封邮件的内容——而不用实际发送邮件。
测试运行器通过透明的将正常的邮件后端替换为测试后端来实现。
在测试运行过程中,每一封发出的邮件都会保存在 django.core.mail.outbox
中。这是所有已经发送的 EmailMessage
实例的列表。 outbox
属性是一个特殊的属性,只有在使用 locmem
邮件后端时才会创建。它通常不作为 django.core.mail
模块的一部分存在,你也不能直接导入它。下面的代码展示了如何正确访问这个属性。
下面是一个检查 django.core.mail.outbox
长度和内容的测试示例:
from django.core import mail
from django.test import TestCase
class EmailTest(TestCase):
def test_send_email(self):
# Send message.
mail.send_mail(
"Subject here", "Here is the message.",
"from@example.com", ["to@example.com"],
fail_silently=False,
)
# Test that one message has been sent.
self.assertEqual(len(mail.outbox), 1)
# Verify that the subject of the first message is correct.
self.assertEqual(mail.outbox[0].subject, "Subject here")
在 Django *TestCase
中的每个测试开始时,测试发件箱都会被清空。要手动清空发件箱,将空列表分配给 mail.outbox
:
from django.core import mail
# Empty the test outbox
mail.outbox = []
TransactionTestCase.available_apps默认情况下,available_apps 是设置为 None。每次测试后,Django 都会调用 flush ...
可重用性很重要设计,构建,测试以及维护一个 web 应用要做很多的工作。很多 Python 以及 Django 项目都有一些常见问题。如果我...
测试用例是使用 JUnitCore 类来执行的。JUnitCore 是运行测试的外观类。它支持运行 JUnit 4 测试, JUnit 3.8.x 测试,或者他们的...
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!“以前是人放狗看家,现在是狗牵着人散步”— 随笔...
OptimisticLockerInnerInterceptor当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:取出记录时,获取当前...