Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】

这篇具有很好参考价值的文章主要介绍了Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一章:

Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客

本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看:

python django vue httprunner 实现接口自动化平台(最终版)_python+vue自动化测试平台_做测试的喵酱的博客-CSDN博客

一、DebugTalks 背景及相关接口

1.1 DebugTalks 应用

接口自动化,驱动使用的是httprunner==1.0版本。

httprunner 中,有一个debugtalks.py 文件,来编写自定义函数。

所以我们在创建项目时,会自动创建一个debugtalks.py 文件。一个项目对应一个debugtalks.py文件。

1.2 DebugTalks 接口

请求方式 URI 对应action 实现功能
GET /debugtalks/ .list() 查询debugtalk列表
GET /debugtalks/{id}/ .retrieve() 检索一条debugtalk的详细数据
PUT /debugtalks/{id}/ update() 更新一条数据中的全部字段
PATCH /debugtalks/{id}/ .partial_update() 更新一条数据中的部分字段

二、DebugTalks 接口

debugtalks 就是一个python文件

2.1 内置函数文件的列表 .list()

Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】,Django实现测试平台,Django/flask,Python,django,自动化,python

 内置函数文件,是伴随的项目产生的。创建一个项目,自动创建一个debugtalk.py文件。删除一个项目,自动删除对应的debugtalk.py文件。

GET /debugtalks/ .list() 查询debugtalk列表

2.2  查看内置函数文件 .retrieve()

GET /debugtalks/{id}/ .retrieve() 检索一条debugtalk的详细数据

点击文件

Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】,Django实现测试平台,Django/flask,Python,django,自动化,python 

Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】,Django实现测试平台,Django/flask,Python,django,自动化,python 

2.3 更新内置函数文件 

PUT /debugtalks/{id}/ update() 更新一条数据中的全部字段

点击底部保存,更新文件。

2.4 创建与删除

创建与删除,是伴随项目 创建与删除的,所以内置文件的创建与删除,不是通过接口实现的。

三、模型类model

from django.db import models

from utils.base_models import BaseModel


class DebugTalks(BaseModel):
    id = models.AutoField(verbose_name='id主键', primary_key=True, help_text='id主键')
    name = models.CharField('debugtalk文件名称', max_length=200, default='debugtalk.py', help_text='debugtalk文件名称')
    debugtalk = models.TextField(null=True, default='#debugtalk.py', help_text='debugtalk.py文件')
    project = models.OneToOneField('projects.Projects', on_delete=models.CASCADE,
                                   related_name='debugtalks', help_text='所属项目')

    class Meta:
        db_table = 'tb_debugtalks'
        verbose_name = 'debugtalk.py文件'
        verbose_name_plural = verbose_name
        ordering = ('id',)

    def __str__(self):
        return self.name

这段代码定义了一个名为 DebugTalks 的 Django 模型(Model)类,表示一个 debugtalk.py 文件。

该模型类继承自 BaseModel,并包含以下字段:

  • id:自增的主键字段,类型为 AutoField。
  • name:debugtalk 文件的名称,类型为 CharField。
  • debugtalk:debugtalk.py 文件的内容,类型为 TextField。
  • project:与该 debugtalk.py 文件关联的项目,采用一对一(OneToOne)关系,类型为外键(ForeignKey)字段,关联到 projects.Projects 模型。

此外,该模型类还定义了以下元数据(Meta):

  • db_table:指定数据库中表的名称为 tb_debugtalks。
  • verbose_name:该模型在后台管理页面中显示的名称为 "debugtalk.py 文件"。
  • verbose_name_plural:该模型在后台管理页面中显示的复数名称也为 "debugtalk.py 文件"。
  • ordering:指定按照 id 字段进行升序排序。

通过这个模型类,可以在数据库中创建一个名为 tb_debugtalks 的表,存储 debugtalk.py 文件的信息,并与项目进行关联。

 文章来源地址https://www.toymoban.com/news/detail-579645.html

四、序列化器类

from rest_framework import serializers

from .models import DebugTalks


class DebugTalksModelSerializer(serializers.ModelSerializer):
    project = serializers.SlugRelatedField(slug_field='name', read_only=True)

    class Meta:
        model = DebugTalks
        exclude = ('create_datetime', 'update_datetime',)
        extra_kwargs = {
            'debugtalk': {
                'write_only': True
            }
        }


class DebugTalksSerializer(serializers.ModelSerializer):

    class Meta:
        model = DebugTalks
        fields = ('id', 'debugtalk')

定义了两个序列化器类:

1、DebugTalksModelSerializer 类继承自 DRF 的 ModelSerializer。其中:

  • project 字段使用 SlugRelatedField,将关联到 DebugTalks 模型的 project 字段以 name 属性的形式进行展示,且只读(read_only=True)。
  • Meta 内部类中指定了模型为 DebugTalks,并且排除了 create_datetime 和 update_datetime 字段。
  • extra_kwargs 定义了对于 debugtalk 字段的额外属性,此处设置为只写(write_only=True)。

2、DebugTalksSerializer 类也继承自 DRF 的 ModelSerializer。其中:

  • Meta 内部类中指定了模型为 DebugTalks,并且只包含 id 和 debugtalk 两个字段。

这些序列化器可以用于将 DebugTalks 模型实例转换为 JSON 格式的数据,或者将 JSON 数据反序列化为 DebugTalks 模型实例。通过定义不同的字段和属性,可以对数据进行验证、创建和更新操作,以满足特定的需求。

五、视图

from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework import permissions
from .models import DebugTalks
from rest_framework import mixins
from . import serializers


class DebugTalksViewSet(mixins.ListModelMixin,
                        mixins.RetrieveModelMixin,
                        mixins.UpdateModelMixin,
                        viewsets.GenericViewSet):

    queryset = DebugTalks.objects.all()
    serializer_class = serializers.DebugTalksModelSerializer
    permission_classes = [permissions.IsAuthenticated]

    def get_serializer_class(self):
        return serializers.DebugTalksSerializer if self.action == 'retrieve' else self.serializer_class

首先导入了必要的库和模块:

  • from rest_framework import viewsets 导入了 DRF 的视图集。
  • from rest_framework.decorators import action 导入了 DRF 的装饰器,用于定义自定义动作。
  • from rest_framework import permissions 导入了 DRF 的权限类。
  • from .models import DebugTalks 导入了当前项目中的 DebugTalks 模型类。
  • from rest_framework import mixins 导入了 DRF 的 Mixin 类。
  • from . import serializers 导入了当前项目中的序列化器。

然后定义了一个 DebugTalksViewSet 类,该类继承了 DRF 提供的各种 Mixin 类和 GenericViewSet 类。其中:

  • mixins.ListModelMixin 提供了列表展示功能。
  • mixins.RetrieveModelMixin 提供了详情展示功能。
  • mixins.UpdateModelMixin 提供了更新功能。
  • viewsets.GenericViewSet 是一个通用的视图集类。

在类中定义了以下属性和方法:

  • queryset 属性指定了视图集的查询集,即需要进行操作的数据集合,这里是 DebugTalks.objects.all(),表示获取 DebugTalks 模型的所有实例。
  • serializer_class 指定了默认使用的序列化器类为 serializers.DebugTalksModelSerializer。
  • permission_classes 指定了默认的权限类为 permissions.IsAuthenticated,表示只有认证的用户才能访问该视图集。

接下来定义了一个自定义方法 get_serializer_class(),用于根据不同的动作决定使用哪个序列化器类。如果动作是 retrieve(详情展示),则使用 serializers.DebugTalksSerializer,否则使用默认的序列化器类。

通过这些配置和定义,DebugTalksViewSet 类可以提供列表展示、详情展示和更新功能,并根据不同的动作选择合适的序列化器类进行数据的序列化和反序列化操作。同时,该视图集还具备权限控制,只有认证的用户才能访问。

 

到了这里,关于Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django实现接口自动化平台(八)测试报告reports序列化器及视图【持续更新中】

    上一章: Django实现接口自动化平台(七)数据库设计_做测试的喵酱的博客-CSDN博客 下一章: 官方文档: Serializers - Django REST framework apps/reports/serializers.py 1.1.1 代码解释: 1、  exclude: You can set the  exclude  attribute to a list of fields to be excluded from the serializer. For example: 2、read_o

    2024年02月09日
    浏览(38)
  • Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】

    相关文章: Django实现接口自动化平台(十)自定义action names【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django vue httprunner 实现接口自动化平台(最终版)_python+vue自动化测试平台_做测试的喵酱的博

    2024年02月16日
    浏览(35)
  • Django实现接口自动化平台(十四)测试用例模块Testcases序列化器及视图【持续更新中】

    相关文章: Django实现接口自动化平台(十三)接口模块Interfaces序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django vue httprunner 实现接口自动化平台(最终版)_python+vue自动化测试平台

    2024年02月17日
    浏览(29)
  • 基于 HttpRunner + Django + Vue + Element UI 的接口自动化测试平台

    https://github.com/tahitimoon/LunarLink https://lunar-link-docs.fun 基于HttpRunner + Django + Vue + Element UI 的接口自动化测试平台,生产可用。 此外,非常感谢 花菜。没有 AnotherFasterRunner 就不会有 LunarLink 😃 🎨 Django 🎶 Django Rest framework 🎉 Vue.js 🎃 Element UI 🏐 django-celery-beat(定时任务) 🎲

    2024年04月11日
    浏览(32)
  • Django+vue自动化测试平台(7)-- 使用Selenium+vue实现WebUI自动化及结果展示

    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得

    2024年02月14日
    浏览(42)
  • Vue实现自动化平台(四)--接口管理页面的实现

    上一章: Vue实现自动化平台(三)_做测试的喵酱的博客-CSDN博客 github地址:https://github.com/18713341733/vuemiaotest  这个目前只是用来练手的,项目还没成型。等以后我写完了,再更新一下项目链接。    这个页面样式,与我们上一章 项目管理的页面样式展示基本一样。 所以样式

    2023年04月16日
    浏览(28)
  • 搭建Django+pyhon+vue自动化测试平台

    Django安装 使用管理员身份运行pycharm使用local    检查django是否安装成功     创建项目 cd 切换至创建的项目中启动django项目 启动项目 点击连接跳转至浏览器  更改django为中文settings文件---LANGUAGE_CODE Vue安装 安装cnpm,代替npm指令,速度快        安装vue脚手架         切换至

    2024年02月14日
    浏览(31)
  • 接口自动化测试平台

    下载了大神的EasyTest项目demo修改了下https://testerhome.com/topics/12648 原地址。也有看另一位大神的HttpRunnerManagerhttps://github.com/HttpRunner/HttpRunnerManager 原地址,由于水平有限,感觉有点复杂~~~ 【整整200集】超超超详细的Python接口自动化测试进阶教程,真实模拟企业项目实战!!  

    2024年02月15日
    浏览(27)
  • 接口自动化测试系列-接入测试平台

    测试平台目录 测试平台自建源码 后台核心代码 部分前端代码样例

    2024年02月10日
    浏览(27)
  • 接口测试 react+unittest+flask 接口自动化测试平台

    目录 1 前言 2 框架 2-1 框架简介 2-2 框架介绍 2-3 框架结构 3 平台 3-1 平台组件图

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包