web接口测试之GET与POST请求
目录
目录
前言
GET请求
POST请求
前言
关于HTTP协议,我考虑了一下觉得没必要再花一节内容来介绍,因为网上关于HTTP协议的介绍非常详细。本着以尽量避免介绍一空洞了概念与理论来介绍接口测试,我这里仍然会给出具体实例。
在此之前先简单的介绍一下基本概念:我们想要打开一个网站,首先是需要往浏览器的地址的URL输入框架中输入网地址。当我敲下回车后,通过HTTP协议,将网址传送到域名解析服务器,域名解析服务器根据网址找到对应的IP主机(系统服务器)。这个过程叫request,即请求;当IP主机拿到请求后,将相应的资源返回给用户浏览器。这个过程叫response,即响应。
当用户浏览器向系统服务器请求时,有几种方法,最常用的就是GET和POST两种方法。
在此我们来开发这样一个可以接收GET和POST请求的web应用。当然,这里就要求读者具备一定的web开发基础了。但不编程语言与web框架不是我们讨论的重点。
以flask框架的代码为例。
GET请求
pyfl/
|---- /hello.py
|----/templates/
|----|-----------/index.html
|----|-----------/user.html
hello.py
from flask import Flask,render_template
app = Flask(__name__)@app.route("/")
def index():return render_template("index.html")if __name__ == '__main__':app.run(debug=True)
index.html
<h1> This is index page <h1>
启动flask容器:
通过firebug查看GET请求信息:
当然,这个返回只是一个静态的页面,并且不需要任何参数,我们只需要判断返回是否为200即可。
扩充hello.py如下:
from flask import Flask,render_template
app = Flask(__name__)@app.route("/")
def index():return render_template("index.html")@app.route("/user/<name>")
def user(name):return render_template("user.html",name=name)if __name__ == '__main__':app.run(debug=True)
user.html
<h1> Hell, {{name}} !<h1>
相比较来说,这个GET请求就复杂了一些,在请求的时候跟了一些参数(aaa),后台(hello.py)对参数了进行了接收,并且将其反回到了user.html页面中。
这个时候,我们就可以对这个参数做一些简单的测试,比较参数为空,字符,数字,脚本,sql 之类的。其实,安全测试的sql注入也是通过输参中带入sql语句入手的。
POST请求
pyfl/
|---- /hello.py
|----/templates/
|----|-----------/index.html
hello.py
from flask import Flask,render_template,request
app = Flask(__name__)@app.route("/")
def index():return render_template("index.html")@app.route("/login",methods = ['GET', 'POST'])
def login():if request.method == "POST":username = request.form.get('username')password = request.form.get('password')if username=="zhangsan" and password=="123":return "<h1>welcome, %s !</h1>" %usernameelse:return "<h1>login Failure !</h1>" else:return "<h1>login Failure !</h1>"if __name__ == '__main__':app.run(debug=True)
index.html
<form action="/login" method="post">username: <input type="text" name="username">password: <input type="password" name="password"><input type="submit" id="submit">
</form>
输入用户名,密码登录(后台hello.py判定,用户名为“zhangsan”,密码为“123”登录成功,其它帐号失败。)
Python的有一个requests库,可以很方便的模拟测试POST请求。
#coding=utf-8
import requestss = requestsdata={"username":"zhangsan","password":"123",}
r = s.post('http://127.0.0.1:5000/login', data)print r.status_code
print r.headers['content-type']
print r.encoding
print r.text
执行结果:
200
text/html; charset=utf-8
utf-8
<h1>welcome, zhangsan !</h1>
POST接口的测试也一样,通过不输入为空,或错误的用户名密码,检查返回的内容。
web接口测试之GET与POST请求相关推荐
- WEB接口测试之Jmeter接口测试自动化 (一)(初次接触)
软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...
- postman使用post传入参数_Postman接口测试之POST、GET请求方法
一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法. GET请求:请求指定的页面信息,并返回实体 ...
- Postman接口测试之POST、GET请求方法
一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法. GET请求:请求指定的页面信息,并返回实体 ...
- WEB接口测试之Jmeter接口测试自动化 (二)(数据分离)
转载: http://www.cnblogs.com/chengtch/p/6105231.html 通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-ht ...
- WEB接口测试之Jmeter接口测试自动化 (二)
通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-http请求中,固定的测试环境跑起来也还 感觉良好.不料在新服务器环境中跑用例时,问题来了:修改参数维护脚本等成 ...
- WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试) 接口测试与数据驱动...
转载:http://www.cnblogs.com/chengtch/p/6576117.html 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚 ...
- WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)
转载http://www.cnblogs.com/chengtch/p/6145867.html Jmeter是压力测试.接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkin ...
- jmeter存储http请求返回参数_Jmeter接口测试之HTTP请求默认值(八)
原标题:Jmeter接口测试之HTTP请求默认值(八) 不管是在UI级别的自动化测试还是在接口级别的自动化测试中,对公共数据数据的分离都是一种趋势,或者某种程度来说,这是自动化测试中必须要掌握的一种能 ...
- 接口返回xml格式的数据_接口测试之Jmeter串联xml数据格式请求
点击上方蓝色字体,关注我们 要求 1.测试支付及支付检测两个接口 2.支付及检测的接口请求为xml格式 3.支付请求数据要多组不一样的数据 4.每个接口请求有些参数要求全局唯一 5.模拟正常场景,支付 ...
最新文章
- 英特尔人工智能副总裁:AI不是一种技能,而是一种对于工作的描述
- 密码学-hash散列表
- Android播放器自定义,android surfaceView+mediaPlayer 自定义视频播放器
- spring boot 开源项目汇总
- sql server生成不重复的时间字符串
- Learn OpenGL(四)——片段着色器(Fragment Shader)
- Bartender编辑数据小标题中嵌入的数据更改无效,无法在条码中显示已经扫描的条码号
- Flash 3D之旋转文字
- JavaScript重定向Referer丢失
- 《CSS权威指南》读书笔记4
- 转载 提高github下载速度的方法【100%有效】可达到2MB/s
- 【C语言】函数详解第一期,函数基础
- 硕士研究生论文查重率多少合格?
- C语言 生产者消费者模型
- python的var是什么意思_python3函数里var是什么意思?
- 小程序开发外包需要注意哪些问题?
- listview的属性
- 计算BMI身体质量指数
- 【硬核】超强八位半开源万用表
- 【信息汇总】南开大学计算机考研
热门文章
- 2010年度总结-在淘宝的半年日子
- android 该文件包与具有同一名称的现有文件包存在冲突
- 游戏(2017-12)
- java毕业设计_企业销售合同管理系统
- moment获取本月、上个月、近三个月时间段
- 小米5s升级android9,小米5S lineage16 安卓9.0 极致省电 纯净 完美root Xposed 经典版
- 微信小程序:enablePullDownRefresh、onReachBottomDistance 、动态设置窗口的背景色、动态设置下拉背景字体
- 水果(map的二维应用)
- 京东,想说爱你,并不容易!
- 北都南, 神月あおい - 小悪魔lovers