首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在django rest框架中测试方法是否被调用

如何在django rest框架中测试方法是否被调用
EN

Stack Overflow用户
提问于 2019-11-13 14:16:55
回答 2查看 212关注 0票数 2

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class class1(models.Model):
    field_a = models.integerfield(...)
    field_b = models.integerfield(...)

我还有一个序列化程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Class1Serializer(serializers.ModelSerializer):
    class Meta:
        model = Share
        fields = '__all__'

这是我的观点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
router = routers.DefaultRouter()
router.register(r'blah', Class1View)

还有,我有utils.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def prop(Share):
    pass

如何编写测试来检查是否调用了prop

EN

回答 2

Stack Overflow用户

发布于 2019-11-13 14:59:06

您可以使用mocking来检查它是否被调用。您可以使用@patch装饰器来模拟使用mockobject.called的断言函数。下面是适用于您的示例代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

我写这篇文章有点匆忙。希望你会发现它很有用

票数 3
EN

Stack Overflow用户

发布于 2019-11-13 14:41:06

测试是否调用了prop()的方法是在_field_a = 1处构造一个测试输入,并使用断言检查结果是否符合您的预期。

如果您想测试prop()是否做了它应该做的事情,您可以简单地编写一个单元测试,在其中实例化一个Share对象,将其传递给prop(),并计算输出(或者副作用?)看看这是不是你想要的。

如果只想知道它是否被调用,也可以在函数中添加一条print()或日志语句。

另一方面,如果您问如何判断示例是否已被调用(只是一个包含pass的函数) --我不知道如何回答。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58839125

复制
相关文章
Django REST框架 | 封装 Respose 类
可以发现在给客户端返回数据都有固定的格式,比如 json。我们为了减少重复代码,重写Response 类
白墨石
2021/01/12
1.6K0
django-rest-framework框架学习
现在新一代web应用都开始采用前后端分离的方式来进行,淘汰了以前的服务器端渲染的方式。前后端分离方式有许多好处,比如 1、可以前后端并行开发,提高开发效率 2、页面都在客户端进行渲染,提高了渲染速度,减小了服务器的压力 3、一套api提供给多个客户端使用,而且不限制客户端的类型(web,app均可)
earthchen
2020/09/24
1.3K0
Django Rest Framework 分页(中)
Django Rest Framework 分页(上) 一、使用普通分页 ① 自定义分页类 page_query_param:表示 url 中的页码参数; page_size_query_param
小团子
2019/07/18
9330
Django Rest Framework 分页(中)
Django REST 框架详解 08 | 认证组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第一步就是认证组件
白墨石
2021/01/12
1.2K0
Django REST 框架详解 09 | 权限组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第二步进行权限组件调用
白墨石
2021/01/12
1.2K0
Django REST 框架详解 05 | 视图家族 Mixins
Django REST framework 为了方便视图类的操作,构建了包括以下几种视图类和工具集:
白墨石
2021/01/12
1.1K0
Django REST 框架详解 02 | 设置与模块
文章目录 一、设置 二、路由模块 三、数据库模块 四、异常模块 一、设置 setting.py import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for
白墨石
2021/01/12
1K0
Django REST 框架详解 10 | 频率认证组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第三步进行权限组件调用
白墨石
2021/01/12
8500
django_rest 框架解决跨域问题
解决跨域问题,需要安装一个包 pip install django-cors-headers 这个包是 rest框架特定的 之后在setting里面app里面注册’corsheaders’, 还要加一个中间件,位置一定要放对
一写代码就开心
2021/03/02
9400
Django REST 框架的 FBV 与 CBV 选择
浏览器通过url传给路由,由as_view 进入ChildView,ChildView通过View的 dispatch 方法来根据不同请求方法执行不同的方法
白墨石
2021/01/12
1.3K0
Django Rest Framework 序列化(中)
Django Rest Framework 序列化(上) 一、进一步使用 Serializer ① 路由 ② 视图 ③ 使用 serializer # choices 字段显示 user_type
小团子
2019/07/18
1K0
Django Rest Framework 序列化(中)
Django Rest Framework
https://q1mi.github.io/Django-REST-framework-documentation/
vanguard
2020/07/07
2.3K0
Django Rest Framewor
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务) 204 NO CONTENT - [DELETE]:用户删除数据成功。 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 更多看这里:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 状态码
py3study
2020/01/19
1.3K0
Django Rest Framewor
django rest swagger
在周四的测试运维试听课程中,芒果给大家介绍了契约测试,以及基于django rest framework 的 Swagger使用,这里我们来做个小总结。
TestOps
2022/04/07
7340
django rest swagger
django rest_framework使用pytest单元测试
执行 python manager.py test 会对路径所有test*.py 进行测试
编程黑洞
2023/03/06
7210
Django REST Framework
Django REST Framework 1. REST 前后端分离 API-ApplicationProgrammingInterface 为了应付千变万化的前端需求 REST:RepresataionsStateTrans 20000 Fieding博士提出 RESTful:遵守REST规范的技术设计的软件可以称为RESTful REST规范 URL代表一个资源,一个资源应该是一个名词 动作有HTTP的methode方法提供 URL应该包含版本信息,版本信息也可以放在HTTP协议中 过滤信息,使用UR
ruochen
2021/07/22
2.2K0
Django REST Framework
django-rest_framework api框架学习day1
今天开始了django-rest-framework的学习 *** 其实api写起来的话要比前后端一起写要简单很多,因为你不需要关心前端怎么写,主要心思放在后端上面即可,前端的话随便找个模板,然后用vue语法嵌套上去就好了,一样可以做到很好看,实现了前后端的分离,非常的nice,开始学习之路了!加油奥利给 *** 首先需要安装rest-framework *** pip install framework *** 接着在setting-installed-apps中注册 *** INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘testAPI.apps.TestapiConfig’, ‘rest_framework’, ‘ajax’, ] *** 注册完成之后路由上的写法也有些不同, URL中 *** from django.urls import path from . import views from .views import Order app_name=’testAPI’ urlpatterns=[ path(”,Order.as_view()),
kirin
2020/05/09
1.3K0
Spring MVCD框架中调用HanLP分词的方法
项目简要:关于java web的一个项目,用的Spring MVCd 框架。鉴于参与此次项目的人中并不是所人都做的Spring,为了能够提高效率,建议大家是先抛开SPring来写自己负责的模块,最后再把各个模块在Spring里面集成。
IT小白龙
2019/07/10
7760
Spring MVCD框架中调用HanLP分词的方法
Django REST 框架详解 06 | 视图家族 Generics 与 Viewsets
工具视图都是 GenericAPIView 的子类,不同的子类继承不同工具类,重写请求方法。
白墨石
2021/01/12
1.3K0
点击加载更多

相似问题

Django Rest框架中的测试PUT方法

12

如何在Django,Django Rest框架中测试APIView

13

测试Django模拟-检查函数/方法是否被调用

11

如何在Django REST框架中测试FileField

30

测试Django REST框架

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文