如何解决Django Mock作为单元测试的一部分在类函数中使用的导入函数
因此,我正在为django应用程序编写测试,并且我已经成功模拟了测试不需要的大量外部api调用,但是有人将我的send_sms绊倒了。从这里开始是代码:
a/models.py
:
from utils.sms import send_sms
...
class TPManager(models.Manager):
def notification_for_job(self,job):
...
send_sms()
...
class TP(models.Model):
objects = TPManager()
...
p/test_models.py
:
@patch('a.models.send_sms')
@patch('p.signals.send_mail')
def test_tradepro_review_job_deleted(self,send_mail,send_sms):
job = Job.objects.create(
tradeuser=self.tradeuser,location=location,category=category,details="sample details for job"
)
创建作业对象通过其TP.objects.notification_for_job
方法触发perform_create
:
p/views.py
:
def perform_create(self,serializer):
job = serializer.save(tradeuser=self.request.user.tradeuser)
if settings.DEV_MODE:
from a.models import TP
job.approved = True
job.save()
TP.objects.notification_for_job(job)
我尝试嘲笑a.models.TP.objects.notification_for_job
,utils.sms.send_sms
,a.models.TPManger.notification_for_job
全部无济于事。这是一个非常复杂的流程,但是我相信我已经在这里尝试了主要的模拟候选人,并且想知道是否有人知道如何模拟notification_for_job
函数或send_sms
函数,主要是为了防止这些api调用不可避免地会由于我的测试环境而失败。
任何想法都将不胜感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。