目录

目录

前言

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请求相关推荐

  1. WEB接口测试之Jmeter接口测试自动化 (一)(初次接触)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

  2. postman使用post传入参数_Postman接口测试之POST、GET请求方法

    一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法. GET请求:请求指定的页面信息,并返回实体 ...

  3. Postman接口测试之POST、GET请求方法

    一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法. GET请求:请求指定的页面信息,并返回实体 ...

  4. WEB接口测试之Jmeter接口测试自动化 (二)(数据分离)

    转载:    http://www.cnblogs.com/chengtch/p/6105231.html 通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-ht ...

  5. WEB接口测试之Jmeter接口测试自动化 (二)

    通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-http请求中,固定的测试环境跑起来也还 感觉良好.不料在新服务器环境中跑用例时,问题来了:修改参数维护脚本等成 ...

  6. WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试) 接口测试与数据驱动...

    转载:http://www.cnblogs.com/chengtch/p/6576117.html 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚 ...

  7. WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)

    转载http://www.cnblogs.com/chengtch/p/6145867.html  Jmeter是压力测试.接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkin ...

  8. jmeter存储http请求返回参数_Jmeter接口测试之HTTP请求默认值(八)

    原标题:Jmeter接口测试之HTTP请求默认值(八) 不管是在UI级别的自动化测试还是在接口级别的自动化测试中,对公共数据数据的分离都是一种趋势,或者某种程度来说,这是自动化测试中必须要掌握的一种能 ...

  9. 接口返回xml格式的数据_接口测试之Jmeter串联xml数据格式请求

    点击上方蓝色字体,关注我们 要求 1.测试支付及支付检测两个接口 2.支付及检测的接口请求为xml格式 3.支付请求数据要多组不一样的数据 4.每个接口请求有些参数要求全局唯一 5.模拟正常场景,支付 ...

最新文章

  1. 英特尔人工智能副总裁:AI不是一种技能,而是一种对于工作的描述
  2. 密码学-hash散列表
  3. Android播放器自定义,android surfaceView+mediaPlayer 自定义视频播放器
  4. spring boot 开源项目汇总
  5. sql server生成不重复的时间字符串
  6. Learn OpenGL(四)——片段着色器(Fragment Shader)
  7. Bartender编辑数据小标题中嵌入的数据更改无效,无法在条码中显示已经扫描的条码号
  8. Flash 3D之旋转文字
  9. JavaScript重定向Referer丢失
  10. 《CSS权威指南》读书笔记4
  11. 转载 提高github下载速度的方法【100%有效】可达到2MB/s
  12. 【C语言】函数详解第一期,函数基础
  13. 硕士研究生论文查重率多少合格?
  14. C语言 生产者消费者模型
  15. python的var是什么意思_python3函数里var是什么意思?
  16. 小程序开发外包需要注意哪些问题?
  17. listview的属性
  18. 计算BMI身体质量指数
  19. 【硬核】超强八位半开源万用表
  20. 【信息汇总】南开大学计算机考研

热门文章

  1. 2010年度总结-在淘宝的半年日子
  2. android 该文件包与具有同一名称的现有文件包存在冲突
  3. 游戏(2017-12)
  4. java毕业设计_企业销售合同管理系统
  5. moment获取本月、上个月、近三个月时间段
  6. 小米5s升级android9,小米5S lineage16 安卓9.0 极致省电 纯净 完美root Xposed 经典版
  7. 微信小程序:enablePullDownRefresh、onReachBottomDistance 、动态设置窗口的背景色、动态设置下拉背景字体
  8. 水果(map的二维应用)
  9. 京东,想说爱你,并不容易!
  10. 北都南, 神月あおい - 小悪魔lovers