使用django和restframework开发接口
使用postman测试接口
使用unittest和requests模块测试接口
目录
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
访问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 serializers class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model=User fields={'url','username','email','groups'} class GroupSerializer(serializers.HyperlinkedModelSerializer): class Meta: model=Group fields={'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 views
router=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相关测试。