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

你可能感兴趣的:(jmeter学习四,添加http cookie管理器)