Django中的SMS / Text后端

问题描述 投票:1回答:1

我想创建一个后端发送SMS/TextEmailBackEnd我可以完成发送短信的任务很好,但问题是测试。

我可以测试在测试过程中使用django.core.mail.outbox发送了多少封电子邮件我想做一些类似的短信说sms.smsoutbox所以我怎样才能为Django写这样的东西。

我知道email outbox在单个测试期间驻留在本地存储器中,因此我可能会问的是,在测试期间如何在localmemory中放置一些内容。

谢谢。

django django-testing
1个回答
0
投票

我认为好的'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,但它可能没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.