使用django和restframework开发接口

使用postman测试接口

使用unittest和requests模块测试接口

目录

Django安装​

Django Rest Framework​

创建API应用

数据库迁移

创建超级管理员​

启动Server​​

配置路由

Swagger接口文档生成

接口测试思路

使用unittest测试接口


Django简介

Django安装

django要在2.1.8 在这个版本下,swagger文档才能接入django

(我操作的时候swagger没有成功打开,后续又换回了django4.0banben)

指定django版本进行安装

Django Rest Framework

它是基于Django的,帮助我们快速开发符合restful规范的接口框架,它主要适用于前后端分离项目。
官方文档一:https://www.django.cn/course/show-20.html
官方文档二:https://www.django-rest-framework.org/api-guide/serializers/

这三个文件为django框架做准备

restful风格,域名接口更清晰,不管什么请求,接口一致。

创建API应用

API应用是接口应用

数据库迁移

创建超级管理员

启动Server

http://127.0.0.1:8000/

访问8000端口,可以打开django网站,说明django项目运行成功

修改端口

http://127.0.0.1:8000/admin/login/?next=/admin/

serializers.py文件输入如下内容:

from django.contrib.auth.models import  User,Group
from rest_framework import serializersclass UserSerializer(serializers.HyperlinkedModelSerializer):class Meta:model=Userfields={'url','username','email','groups'}
class GroupSerializer(serializers.HyperlinkedModelSerializer):class Meta:model=Groupfields={'url','name'}

views.py文件代码

from django.shortcuts import render
from django.contrib.auth.models import User,Group
from rest_framework import  viewsets
from  api.serializers import UserSerializer,GroupSerializer# Create your views here.
class UserViewSet(viewsets.ModelViewSet):queryset = User.objects.all()serializer_class = UserSerializer
#viewsets是一个文件 ModelViewSet是一个类class GroupViewSet(viewsets.ModelViewSet):queryset = Group.objects.all()serializer_class = GroupSerializer

配置路由

urls.py文件代码


from django.contrib import admin
from django.urls import path
from  django.conf.urls import include
from rest_framework import routers
from api import viewsrouter=routers.DefaultRouter()
#router是类DefaultRouter的实例
router.register(r'users',views.UserViewSet)
router.register(r'groups',views.GroupViewSet)urlpatterns = [path('admin/', admin.site.urls),path('',include(router.urls)),path('api-auth/',include('rest_framework.urls',namespace='rest_framework'))
]

运行python

打开浏览器

Swagger接口文档生成

(这步我操作失败,但是不影响接口测试)

这里我没有docs/有报错

接口测试思路

使用postman对查询用户接口进行访问 http://127.0.0.1:8000/users

需要设置basic auth,为创建的超级管理员账号和密码

通过接口可以查到所有用户。

使用post请求创建接口 http://127.0.0.1:8000/users/

在body里填写参数

注意users后面要加上/

这里创建了一个用户。

删除用户

使用unittest测试接口

在api目录下创建test_unittest文件

import requests
import unittest
class UserTest(unittest.TestCase):def setUp(self):self.base_url='http://127.0.0.1:8000/users'self.auth=('yangyl13','xxxx')def test_get_user(self):r=requests.get(self.base_url+'/4/',auth=self.auth)result=r.json()self.assertEqual(result['username'],'13261166388')self.assertEqual(result['email'], 'Iloveyou@163.com')def test_add_user(self):form_data={'username':'w1','email':'w1@163.com'}r=requests.post(self.base_url+'/',data=form_data,auth=self.auth)result=r.json()self.assertEqual(result['username'],'w1')def test_delete_user(self):r=requests.delete(self.base_url+'/3/',auth=self.auth)self.assertEqual(r.status_code,204)def test_no_auth(self):r=requests.get(self.base_url)result=r.json()self.assertEqual(result['detail'],'Authentication credentials were not provided.')if __name__ == '__main__':unittest.main()

执行文件,可以看到成功和失败的用例数。

可以再创建一个类,写group相关测试。

内容管理系统测试实战相关推荐

  1. .NET Core实战项目之CMS 第八章 设计篇-内容管理极简设计全过程

    写在前面 上一篇文章.NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程中我带着大家进行了权限部分的极简设计,也仅仅是一个基本的权限设计.不过你完全可以基于这套权限系统设计你的更 ...

  2. Elasticsearch 快照生命周期管理 (SLM) 实战指南

    1.Elasticsearch 保证高可用性的方式 Elasticsearch 保证集群高可用的方式包含但不限于如下三种: 方式一:副本分片.主分片失效后,副本分片会被提升为主分片. 方式二:跨集群复 ...

  3. 视频教程-Confluence培训之内容管理培训-研发管理

    Confluence培训之内容管理培训 二十年软件业从业经验. Atlassian认证专家. Jira.Confluence.Bitbucket中文插件作者. 张光林 ¥19.00 立即订阅 扫码下载 ...

  4. 全程配图超清晰的Springboot权限控制后台管理项目实战第二期(Springboot+shiro+mybatis+redis)

    全程配图超清晰的Springboot权限控制后台管理项目实战第二期(Springboot+shiro+mybatis+redis) 众所周知,作为一个后端新手学习者,通过项目来学习,增长项目经验,是一 ...

  5. python将pandas dataframe内容写入ElasticSearch实战

    python将pandas dataframe内容写入ElasticSearch实战 目录 python将pandas dataframe内容写入ElasticSearch实战 索引设置 数据写入 数 ...

  6. strapi 开源api 内容管理平台试用

    strapi 是一个开源的api && 内容管理平台,功能操作起来还是比较方便简单的. 安装 使用docker && docker-compose 代码clone gi ...

  7. 巨杉数据库中标东莞农商银行非结构化内容管理平台项目

    2019独角兽企业重金招聘Python工程师标准>>> 近期,巨杉数据库中标东莞农村商业银行非结构化内容管理平台项目,通过新一代分布式数据库技术,助力东莞农商银行智慧化转型. 本次合 ...

  8. 从文件管理到获取洞见,AI 正在彻底变革企业内容管理

    随着企业规模的拓展与时间的推移,企业内部数据量逐渐增多,内容管理成为企业面临的一大难题.AI 和机器学习可以有效解决这一问题,从根本上改变企业进行内容管理的模式.由此,人工智能和机器学习也将为企业内容 ...

  9. anki怎么设置学习计划_新媒体企业品牌营销策划公众号运营规划线上推广内容管理sop工作流程计划方案表格模板新手小白零基础怎么学习写作软文涨粉技巧攻略下载...

    新媒体运营工作总结(共10篇) - 大文斗范文网 ...策划方案(总监级的推广方案) | 秦志强笔记_网络新媒体... 月薪30K新媒体运营在用的线上内容管理营销推广计划sop方案... 教你怎么写好 ...

最新文章

  1. Google Map API V3调用arcgis发布的瓦片地图服务
  2. 街电与搜电网络营销外包合并,怪兽充电终上市共享充电市场将迎来新变化
  3. git的团队协作开发
  4. Serializable Parcelable
  5. 【控制】控制学习路线资源整理
  6. wireshark抓取https并解密方法一
  7. python横向合并merge_【Python代替Excel】7:merge、concat、append
  8. ArcEngine中使用上下左右键移动地图
  9. Facebook 公开 APT32 身份,疑为越南本地一家 IT 公司
  10. DirectFB简介以及移植[一]【转】
  11. C#反射调用类的私有方法
  12. 《Sanmill 直棋游戏》创作之旅
  13. git fatal: unable to access *** Timed out
  14. CentOS 8.3.2011 镜像在PC上安装选择安装源时提示:设置基础软件仓库时出错
  15. 读书笔记——WebKit技术内幕 WebKit架构和模块
  16. 浪潮配置ipim_浪潮服务器管理口IP设置_IPMI设置
  17. 【图片resize】图片三种缩放方式/letterbox_image实现
  18. webstorm 光标换行快捷键
  19. 鸡为什么感染呼吸疾病 预防鸡流鼻涕打喷嚏的药
  20. 20200418京东算法暑期实习笔试 Python3

热门文章

  1. 使用xorm工具,根据数据库自动生成 go 代码
  2. 用python做简单的题目_「每日一练」巧用python做小学的数学题
  3. 【论文写作】城市酒店入住信息管理系统中客房各项功能如何写
  4. linux模块builtin是什么意思,Linux命令手册
  5. cpc卡内计费信息异常包括_抖音信息流广告投放收费标准是什么?抖音发一个广告多少钱?...
  6. 荣耀v40还会适配鸿蒙,荣耀年度旗舰V40再确认!将搭载“双芯片”:还能升级鸿蒙系统...
  7. LARGE_INTEGER类型和QueryPerformanceFrequency()
  8. android 打开闪光灯,Android 闪光灯的打开和关闭
  9. linux自学笔记--DNS服务器
  10. request 获取url