• 0
  • 0
分享
  • web接口测试之GET与POST请求——软件测试圈
  • 北极 2022-06-20 14:35:44 字数 2697 阅读 1698 收藏 0

关于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容器:

1.png

访问:http://127.0.0.1:5000/

通过firebug查看GET请求信息:

2.png

当然,这个返回只是一个静态的页面,并且不需要任何参数,我们只需要判断返回是否为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>

访问:http://127.0.0.1:5000/user/aaa

3.png

相比较来说,这个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>" %username
        else:
            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>

访问:http://127.0.0.1:5000/

4.png

输入用户名,密码登录(后台hello.py判定,用户名为“zhangsan”,密码为“123”登录成功,其它帐号失败。)

5.png

Python的有一个requests库,可以很方便的模拟测试POST请求。

#coding=utf-8
import requests
s = requests
data={"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接口的测试也一样,通过不输入为空,或错误的用户名密码,检查返回的内容。


作者:虫师

原文链接:https://www.cnblogs.com/fnng/p/4853996.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1. Jmeter简介Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。运行环境为Windows 10系统,JDK版本为1.8,JMeter版本为3.3。2. Jmeter安装2.1 JDK安装由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9)...
            12 12 2531
            分享
          • 测试报告是由测试人员撰写的,阅读对象是整个项目组。在测试报告的帮助下,测试人员、开发人员、项目经理、产品经理等相关者了解整体测试活动的质量。它可以帮助成员找出问题的根源或问题出现的阶段。它有助于分析问题是否是由于需求分析不够完善,代码设计不妥、管理不善的后果、不稳定的环境设施而导致的。对于项目的收官有重大意义。那测试总结报告应该怎么写呢?我见过一些测试总结报告只有过程,忽略结果,还有的总结报告只体现结果,忽略过程。我认为一份完整的测试总结报告需要将结果和过程相结合。具体包括的内容如下:任何报告都是结论先行。一上来,先pia一个结论,然后再详细开展论述。结论是为了告诉别人这个版本测试是合格还是不...
            3 3 7003
            分享
          •   51Testing软件测试网正在收集测试行业问卷结果,如果你也想为测试行业的前景助力,就点击下方的链接提交答案吧,还有精美礼品等你拿(测试课程五选二)。链接:http://vote.51testing.com/  项目背景  某项目是一个OA管理系统(外包给一家南方公司),以JAVA为开发语言、VUE为前端框架、MySQL为后端数据库管理系统。去年9月开始立项、开发,一直到今年6月中旬发布,减除项目暂停期间,共历经7个多月。  项目规模  该系统主要由六大模块组成。项目成员有1名项目经理、1名开发经理、10余位开发、2名测试。  项目测试情况  2021年11月份末,部门经理找到笔者,让笔...
            0 0 892
            分享
          •   一些想转行做软件测试的同学,想知道现在学完的同学的工资是多少,是否值得转行去学习,今天我就拿数据给大家分析一下软件测试到底值不值得去学习。  软件测试的好处  从数据可以看出,软件测试行业的平均工资在9K左右,刚培训完软件测试的学生也可以拿到平均6K,年份越长工资越高,行业领导者的平均工资在25K以上。其中,超过27.4%的员工拿到10-15K的工资。  软件测试招聘需求  看完福利,我们再来看看招聘需求。从数据可以看出,目前软件测试行业的招聘需求主要集中在超一线城市和一线城市。其中,深圳和上海的招聘需求最高,有超过16.6K个和14.7K个的招聘需求,所以建议想从事软件测试工作的同学选择...
            0 0 859
            分享
          • 接着《深聊性能测试之:Locust性能自动化代码实战(一)》,我们继续第二部分的分享:4. Locust高级用法4.1 关联做过接口或者爬虫的的大佬都知道,传参是必不可少的,而常见的场景有session_id。对于返回的html页面,可用采用lxml库来定位获取需要的参数。我们先上代码# -*- coding: utf-8 -*- """ @ auth : carl_DJ @ time : 2022-07-23 """ from&nbs...
            1 0 7862
            分享
      • 51testing软件测试圈微信