在使用answer时,我在Django项目上创建了一个cron作业。实际上,我已经实现了一个代码,允许每个客户端发送一封自动发送电子邮件给他们的生日。当我想测试代码时,我的问题就出现了。
有人能告诉我要测试此代码需要做些什么吗?有哪些工具可以进行这种测试?
Freezegun是一个很好的解决方案吗?如果是这样,我怎么能用它?
答案 0 :(得分:1)
首先在您的设置文件中,设置要输出到文件的电子邮件
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper location
然后设置单元测试以调用管理命令并检查文件中的电子邮件地址。像这样的东西
from django.core.management import call_command
from django.test import TestCase
from django.utils import timezone
class BirthdayTests(TestCase):
def setUp(self):
self.owner_first_name = "Gumdrop"
self.owner_last_name = "Goodie"
self.bb_email = "goodie@gumdrop.com"
my_birthday_boy_user = User(username=self.owner_first_name.lower(),
first_name=self.owner_first_name,
last_name=self.owner_last_name,
email=self.bb_email)
my_birthday_boy_person = Person(user=my_birthday_boy_user, birthday=timezone.now().date())
my_birthday_boy_person.save()
def test_brithday_boy_emailed():
call_command('your_management_command')
mail_file = open('/tmp/app-messages', 'r')
self.assertTrue(self.bb_email in mail_file.read())
然后用
运行测试$ ./manage.py test <YOUR APP NAME>
请记住在设置文件中重新设置电子邮件,或使用特殊设置文件进行测试,并在测试时使用--settings开关。