jmeter学习四,添加http cookie管理器

什么是coockie

首先我们需要知道http是无状态协议,什么是无状态,举一些简单的例子,比如登陆网页后,你想保存自己的登陆状态或者添加货品到购物车中,如果只是使用http请求的话,是无法实现的,因为http无法保存状态。
解决方法也很简单,既然http无法保存,那么将这些状态(数据)保存在用户本地,下一次请求网页时,这些数据一同发送到服务器上,不就可以解决问题了吗。没错,cookie就是保存在用户本地的数据,都是以键值对的格式保存。

jmeter添加http cookie管理器

适用场景:需要cookie才能正常访问的接口,例如一些需要登陆后才能访问的接口,例如下面的这个简单登陆接口,基于python flask框架

正确的登陆账号是root, 密码是123456,登陆成功后,会在本地保存一个name:root的cookie键值对

@app.route('/login', methods=['post'])
def login():
    return_data = {}
    name = request.form.get('name')
    password = request.form.get('password')
    if name == 'root' and password == '123456':
        return_data['status'] = 200
        return_data['msg'] = 'success'
        resp = make_response(jsonify(return_data))
        resp.set_cookie('name', 'root')
        return resp
    else:
        return_data['status'] = 401
        return_data['msg'] = 'login fail'
        return jsonify(return_data), 401


@app.route('/get_info', methods=['get'])
def get_info():
    name = request.cookies.get('name')
    if name and name == 'root':
        data = {
            'name': 'root',
            'password': '123456',
        }
        return jsonify(data)
    else:
        return '403Forbidden', 403


if __name__ == '__main__':
    app.run()

首先在jmeter配置登陆和查询两个http请求,登陆请求设置正确的用户名和密码。分别请求/login和/get_info接口,并且为这两个请求都添加响应断言,断言响应的代码是不是200,看看测试的结果

测试结果

可以看到查询这个http请求测试不通过,因为接口返回的是403,并不是200

让我们右键线程组,添加一个http cookie管理器

添加完成后,在执行一次,看看测试结果

让我们看看原因,如下图,添加了http cookie管理器后,请求body中增加了一行name=root的数据,后台只有在接收到这个cookie是,才会响应200

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要文体来自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano阅读 11,109评论 3 27
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 连续三天的考试终于完结了,可以告一段落,很轻松。 下午过来跟春来做了对练。其实主要来对练我当咨询师的感觉的,于是我...
    倾葶阅读 143评论 0 0
  • R语言readr包的使用 readr包中的读写函数比正常R语言数据的读写快了很多倍 主要的包有两个,一个数read...
    485b1aca799e阅读 19,257评论 0 4