最近在利用JMeter做接口自动化测试工作,实现了很多场景的自动化,想着很多方法具有通用性,于是拿出来分享下,希望对大家有所启发。
今天分享的是场景是:JMeter进行接口测试,两种方法获取登录接口的Cookie值。
HTTPCookie管理器
在JMeter中,HTTPCookie管理器(HTTPCookieManager)用于管理发送和接收的HTTP请求中的Cookie。Cookie是服务器用来在客户端和服务器之间维持会话状态的一种机制,通过在请求和响应中传递Cookie来实现状态的保持。
这次分享的案例就是,在登录后,通过使用HTTPCookie管理器,可以自动处理和发送服务器返回的登录会话Cookie,这样可以确保在后续的请求中保持登录状态,以进行需要登录的操作。
添加一个测试计划
命名为:商品前台接口(测试环境)。
添加配置元件
1、用户定义的变量
主要包括用户名、密码、验证码三个变量。
2、HTTP请求默认值
主要包括协议、服务器名称或IP、端口号、Contentencoding:
3、HTTP信息头管理器
这里可以填Refer、Content-Type等信息:
4、HTTPCookie管理器
可以填Cookie,也可不填,根据实际项目需要:
新建线程组
新建简单控制器
简单控制器对结果没有任何影响,主要是为了使脚本结构清晰,一般一个简单控制器下一个请求:
新建HTTP请求
需要填写方法、路径、请求参数等信息。
填写登录接口的请求信息:
填写获取商品接口的请求信息:
添加断言
登录接口在登录模块已有断言,在这里的断言可加可不加,这里主要是测试查看商品信息接口,所以在查看商品信息接口下加了断言,即返回的status字段为0。
添加监听器
添加查看结果数,可查看请求的返回的信息。
HTTP信息头管理器
HTTP信息头管理器,用于管理发送给服务器的HTTP请求的信息头,信息头包含在HTTP请求中,用于传递与请求相关的元数据和其他附加信息。
例如我们常用的HTTP头信息中,包含如下字段:
Content-Type(内容类型):用于指定请求或响应中传输的数据的媒体类型。常用的值包括"application/json"、"application/xml"、"application/x-www-form-urlencoded"等。
User-Agent(用户代理):用于标识客户端发起请求的用户代理(浏览器、应用程序等)。例如,"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36"。
Authorization(授权):用于在请求中包含认证凭据,以验证用户身份。这可以是基本认证(BasicAuthentication)或其他认证机制,具体取决于服务器的要求。
Accept-Language(接受语言):用于指定首选的自然语言,以便服务器返回相应的本地化内容。例如,"en-US,en;q=0.9"表示首选英语(美国),其次是任何英语语言。
Referer(引荐页):指定从哪个页面链接跳转到当前页面。有时服务器会检查Referer头以验证请求的来源。
Cookie(Cookie):用于在请求中发送已存储在客户端的Cookie信息。可以手动设置Cookie的键值对,以模拟登录状态或其他需要的会话信息。
登录接口返回的ResponseHeaders中包含Cookie信息:
查看商品接口请求头RequestHeaders中需要Cookie信息:
思路就是将登录接口返回的Cookie信息,通过正则表达式提取出来,放在HTTP信息头管理器中的1个变量Cookie中,供其他接口请求时调用。
添加一个测试计划
命名为:商品前台接口(测试环境)。
添加配置元件
1、用户定义的变量
主要包括用户名、密码、验证码三个变量:
2、HTTP请求默认值
主要包括协议、服务器名称或IP、端口号、Contentencoding。
3、HTTP信息头管理器
这里可以填Refer、Content-Type、Cookie等信息。
新建线程组
新建简单控制器
简单控制器对结果没有任何影响,主要是为了使脚本结构清晰,一般一个简单控制器下一个请求。
新建HTTP请求
需要填写方法、路径、请求参数等信息。
填写登录接口的请求信息:
填写获取商品接口的请求信息:
添加后置处理器
即正则表达式提取器,将信息头的Set-Cookie值提取出来,保存在变量${token}中:
查看商品信息接口时,会自动读取信息头管理器的Cookie,进行请求,获取商品信息。
添加断言
登录接口在登录模块已有断言,在这里的断言可加可不加,这里主要是测试查看商品信息接口,所以在查看商品信息接口下加了断言,即返回的status字段为0。
添加监听
添加查看结果数,可查看请求的返回的信息。
这样,一个登录接口就成功完成了。
作者:程序员馨馨