django模拟短信发送



我有一个向你的手机发送短信的方法,我该如何嘲笑它?

服务.py

def send_msg(phone_number):
url = settings.SMS_API_URL
params = {
...
}
resp = requests.get(url, params)
status_code = resp.json().get('status_code')
return status_code

测试.py

@pytest.mark.django_db
// mock it
def test_sms_send(api_client):
data = {
'phone_number': 'some_valid_phone_number'
}
response = api_client.post(reverse('phone_verify'), data=data)
assert response.status_code == status.HTTP_200_OK

我会尝试在单元测试中对其进行修补。

这个想法是添加一个步骤,使您能够在运行测试和启动服务器之前替换函数的实现。

试试文档中的这个例子(有点修改(:

import pytest
@pytest.hookimpl(tryfirst=True)
def patch_send_sms_function():
import project.app.api_utils
def _patched_send_sms(phone_number):
return 200
project.app.api_utils.send_sms = _patched_send_sms

@pytest.mark.django_db
def test_sms_send(api_client):
...

最新更新