Python接口自动化测试教程 -- 2. 用Django开发一个简单的POST | GET接口
要测试接口,首先我们要学会开发一个简单的接口,只有你知道了如何开发,你才能更好的进行测试,才能知道具体哪里最容易出错,从而大大的提高测试的准确性以及覆盖率。所以,我们以Django为例子,开发一个简单的接口,去了解一下原理。
Django介绍
Django是重量级全能型的web框架,功能完全,开放源代码,由Python语言编写。
重点:一个大而全的框架,啥都替你考虑好了
Django官方文档
Django工作原理
用户通过浏览器请求一个页面
请求到达Request Middlewares中间件,中间件对request做一些预处理或者直接response请求
URLConf通过urls.py文件和请求的URL找到相应的View
View Middlewares被访问,它同样可以对request做一些处理或者直接返回response
调用View中的函数
View中的方法可以选择性的通过Models访问底层的数据
所有的Model-to-DB的交互都是通过manager完成的
如果需要,Views可以使用一个特殊的Context
Context被传给Template用来生成页面
Template使用Filters和Tags去渲染输出
输出被返回到View
HTTPResponse被发送到Response Middlewares
任何Response Middlewares都可以丰富response或者返回一个完全不同的response
Response返回到浏览器,呈现给用户
Django如何开发一个POST接口
- 准备工作
pip install django
pycharm中新建一个Django项目
pycharm中生成如下目录项目目录介绍
manage.py : Django项目里面的工具,通过它可以调用django shell和数据库等。
TestDemo/
| — settings.py : 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
| — urls.py : 负责把URL模式映射到应用程序。
| — wsgi.py : 用于项目部署。
Demo /
| — admin.py : django 自带admin后面管理,将models.py 中表映射到后台。
| — apps.py : blog 应用的相关配置。
| — models.py : Django 自带的ORM,用于设计数据库表。
| — tests.py : 用于编写Django单元测试。
| — veiws.py :视图文件,用于编写功能的主要处理逻辑。
setting目录中添加一个APP
Login url编写
创建视图函数
from django.shortcuts import render
from django.http.response import HttpResponse
from django.shortcuts import render_to_response
# Create your views here.
def Login(request):
if request.method == "POST":
username = request.POST.get('username')
return HttpResponse('index')
else:
return render_to_response('login.html')
- 编写Login模板
templates中添加Login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="/login/" method="POST">
<h1>用户名:<input name="username"></h1>
<h1>密码:<input name="password"></h1>
<input type="submit" value="登录">
</form>
</body>
</html>
同时添加了HTML文档之后,要去setting中修改一下路径,要不Django找不到我们的添加的模板
运行一下。
抓取接口的包
- 返回的内容
- 返回的状态
Django开发一个GET接口
在views中写修改一下代码:
from django.shortcuts import render
from django.http.response import HttpResponse
from django.shortcuts import render_to_response
# Create your views here.
def Login(request):
if request.method == "GET":
username = request.GET.get('username')
return HttpResponse(username)
else:
return render_to_response('login.html')
浏览器中: