我想创建一个后端发送SMS/Text
像EmailBackEnd
我可以完成发送短信的任务很好,但问题是测试。
我可以测试在测试过程中使用django.core.mail.outbox
发送了多少封电子邮件我想做一些类似的短信说sms.smsoutbox
所以我怎样才能为Django写这样的东西。
我知道email outbox
在单个测试期间驻留在本地存储器中,因此我可能会问的是,在测试期间如何在localmemory中放置一些内容。
谢谢。
我认为好的'ol mock
将是你最好的选择,假设你正在使用一些已知良好的SMS API,如AWS SNS。借用this SO post,我们假设您的电子邮件功能如下所示
import boto3
def send_sms(number, message):
sns = boto3.client('sns')
sns.publish(PhoneNumber=number, Message=message)
您的测试用例可能如下所示
from django.test import TestCase, mock
from src import send_sms
class SendSMSTestCase(TestCase)
@mock.patch('boto3.client')
def test_send_sms(self, mock_client):
mock_publish = self.mock_client.return_value.publish
send_sms('+18005551212', 'Hello there!')
mock_publish.assert_called_once_with(
PhoneNumber='+18005551212',
Message='Hello there!'
)
您相信SMS API调用(在本例中为SNS via Boto)已经过测试并且可以正常工作,而您只是测试代码是否正确调用它。
您可以构建更多机器来重新实现django.core.mail.outbox
用于SMS,但它可能没有必要。