我在Django框架中制定了测试用例。
用例: 我使用的API通过向用户发送电子邮件来注册用户,当他们点击电子邮件中提供的链接时,他们的帐户就会被激活。
在我的settings.py中,我正在使用
EMAIL_FILE_PATH ='django.core.mail.backends.filebased.EmailBackend'
指向本地目录。
从eclipse运行PyUnit测试用例时,所有工作文件。为每个发送的电子邮件生成文本文件
但是,当我使用时
python ./manage.py test <component_name>
文件无法生成。
有什么见解我使用./manage.py
执行测试用例和使用pyUnit
时有什么区别?
答案 0 :(得分:30)
如果您想使用特定的电子邮件后端,可以在Django中覆盖此方面。
在django.test.utils中,当Django设置测试环境时,Django会将Django测试文档中提到的电子邮件后端更改为locmem:
def setup_test_environment():
...
mail.original_email_backend = settings.EMAIL_BACKEND
settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
因此,如果您要为测试启用发送电子邮件,只需将设置更改为您想要的设置。
from django.test.utils import override_settings
@override_settings(EMAIL_BACKEND='django.core.mail.backends.filebased.EmailBackend')
class MyTest(TestCase):
# your test case
答案 1 :(得分:7)
简单的答案:
如果不设计自己的电子邮件系统,就无法做到这一点,但这可能很愚蠢。我建议做其他事情来验证代码是否成功,而不需要发送电子邮件。比如,运行代码,假设用户单击链接并创建RequestFactory来获取/发布链接以运行与之关联的视图代码。
电子邮件服务
"If any of your Django views send email using Django's email functionality, you probably don't want to send email each time you run a test using that view. For this reason, Django's test runner automatically redirects all Django-sent email to a dummy outbox. This lets you test every aspect of sending email -- from the number of messages sent to the contents of each message -- without actually sending the messages."