gpt4 book ai didi

django - 如何测试 django Rest 框架中是否调用了一个方法

转载 作者:行者123 更新时间:2023-12-03 08:51:12 24 4
gpt4 key购买 nike

我目前正在努力测试我的一个 API localhost:<port No.>/blah/ 。我的模型是

class class1(models.Model):
field_a = models.integerfield(...)
field_b = models.integerfield(...)

我还有一个序列化器:

class Class1Serializer(serializers.ModelSerializer):
class Meta:
model = Share
fields = '__all__'

这是我的观点:

from .utils import prop
lass Class1View(viewsets.GenericViewSet,
mixins.CreateModelMixin, ):
queryset = Share.objects.all()
serializer_class = ShareSerializer

def perform_create(self, serializer, *args, **kwargs):
_field_a = serializer.validated_data['field_a']
_field_b = serializer.validated_data['field_b']

if _field_a == 1:
prop(test.objects.get(field_b = _field_b))

我的 urls.py 是:

router = routers.DefaultRouter()
router.register(r'blah', Class1View)

另外,我有 utils.py

def prop(Share):
pass

如何编写一个测试来检查 prop 是否被称为?

最佳答案

您可以使用模拟来检查它是否被调用。您可以使用 @patch 装饰器来模拟断言函数,使用 mockobject.used 这里是应该适合您的示例代码

from rest_framework.test import APIClient, 
from django.test import TestCase
from unittest.mock import patch


class TestBlah(TestCase):
@patch('view.prop') #this should be the path of the file where prop is to becalled
def test_prop_is_called(self, mock_function):
client = APICLient()
client.post('/blah/' {'field_a':1, 'field_b': 1}, format='json')
self.assert(mock_function.called)

我写这篇文章有点匆忙。希望您觉得它有用

关于django - 如何测试 django Rest 框架中是否调用了一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58839125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com