新书
速递
吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。
文 | 夜鸣猪
如需源码请加吴老师微信索取:fosterwu
一、新建django项目及应用
1、打开pycharm,创建新项目books;
2、在pycharm中安装django;
3、进入Terminal,输入django-admin startproject books;
生成项目:
输入pythonmanage.py runserver,启动服务并点击网址,
可以看到django默认启动页
4、切换到manage.py的同级目录books下面;
5、创建apis应用;
运行完pythonmanage.py startapp apis命令后可以看到应用结构:
6、在./settings.py中注册刚创建的app,这里路径中的“.”代表项目books所在的路径,为整个项目的根目录,后面都用这种形势表示路径;
1)打开./apis/apps.py,可以看到该应用的Config类名为 apis.apps.ApisConfig,该名包含了其所在路径及名字:
2)在./books/setting.py注册应用"apis":
二、接口编写及请求接口
1、开始编写简单的接口,在apis/view.py中添加代码;
1)get方法接口;
fromdjango.http import HttpResponse
import json
defapi_get(request):
'''这里request参数为客户端发送的request请求'''
get_context = {"status":"01",
"methodName":"get",
"message": "用的是get方法"
}
get_data = json.dumps(get_context)
if request.method == "GET": # request.method可以获得服务器接受到request请求的方法类型
# return HttpResponse()将该接口的数据以json格式返回
return HttpResponse(get_data,content_type="application/json,charset=utf-8")
else:
return HttpResponse("请求方法错误")
2)post方法接口;
defapi_post(request):
if request.method == "POST":
api_name =request.POST.get("api_name") #获得post请求中的参数值
# 将post请求中的参数值处理后添加到HttpResponse中返回
post_context = {"status":"02", "methodName": "post", "message":"该接口的请求方式为%s" % api_name}
post_data = json.dumps(post_context)
return HttpResponse(post_data,content_type="application/json,charset=utf-8")
else:
return HttpResponse("请求方法错误")
2、在./books/urls.py中添加接口路径
fromdjango.contrib import admin
fromdjango.urls import path
from apis import views
urlpatterns= [
path('admin/', admin.site.urls),
path('api_get/',views.api_get),
path('api_post/',views.api_post),
]
如果出现红色波浪线,将boods应用设置为Sources Root即可解决:
3、在网页中访问get接口页面;
在Terminal中输入python manage.py runserver启动服务(在输入manage.py时可先输入'm',再按'tab'键补全):
访问该网页链接:
会报404错误,莫慌,这是正常的,在url末尾添加我们写的接口地址,.books/urls.py中存有接口地址:
访问http://127.0.0.1:8000/api_get/ ,接口请求成功:
问http://127.0.0.1:8000/api_post/,由于浏览器默认用的不是post请求,则会显示请求方法错误:
4、用pythonrequests模块访问已写好的接口;
1)在根目录下创建requestsTest.py文件,请求get接口;
import requests
get_data =requests.get("http://127.0.0.1:8000/api_get")
print(get_data.json())
get请求成功
2)请求post接口;
post_content= {"api_name": "post方法"} # post请求方法参数
post_data =requests.post("http://127.0.0.1:8000/api_post", data=post_content)
print(post_data.json())
结果报错:
这个问题是因为post请求返回的结果无法转换成json格式造成的,然后点击Terminal,可以看到django报的错:
主要看错误信息 :
You calledthis URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASHset.
这个错误意思大概就是:你提交的是post请求,但是url没有以slash("斜杠")结尾,而你又添加了APPEND_SLASH set 设置。
根据错误信息,再看我写的代码,url果然没有以"/"结尾,现在把"/"加上,重新启动服务(在Terminal中control+c后重新执行python manage.py runserver),这时候又出现了新的错误:
经过查资料,这是由于django默认post请求需要进行CSRF cookie验证,我们可以在settings中将验证屏蔽,将./books/settings.py中相关代码注释掉:
新启动服务,再次进行post请求,结果成功:
上就是利用django写简单接口的过程,这里的接口与实际接口测试中的restful接口在返回数据形式上有所不同,主要是让我们了解”客户端发送请求——服务器收到请求并处理请求——返回处理后的数据“这个过程。
如需源码请加吴老师微信索取:fosterwu
欢迎留言分享测试人员的财富自由之路
来自测试人的困惑与思考
大龄 | 手工 | 自动化逆袭
【appium实战】appium混合页面点击方法tap的使用
实战:微信小程序+appium测试实例
实战:微信公众号+appium测试实例
使用LR编写windows sockets协议xml报文格式脚本
Python实战:file tell()返回的指针怎么就不一样?
互联网架构的演变
爬虫之我与正则的甜蜜约会
草根在测试行业如何杀出一条血路(8)
软件测试行业现状2018年度报告
2018web测试开发培训一年期周六班!
请在喜马拉雅app搜索并收听“光荣之路”电台 光荣之路 招聘|征稿|合作 |QQ群 735821166@qq.com python群:457561756 性能群:415987441 招聘群:203715128 爱我,请给我好看