Jmeter测试场景:
一个web系统,需要先发送登录请求,获取到登录Token之后,后续每次请求都需要在请求头中附带Token才有权限操作。现在需要在Jmeter中自动获取每次登录请求返回的Token,并附加到后续的请求中。
登录请求的返回报文如下:
{
"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYWN0aW5pYSJdLCJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbIlNVUEVSX0FETUlOIiwiQURNSU4iXSwicm9sZXMiOlt7ImF1dGhvcml0eSI6IlJPTEVfU1VQRVJfQURNSU4ifV0sImV4cCI6MTUzOTA1MDA1NiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9TVVBFUl9BRE1JTiJdLCJqdGkiOiJjMjdlMTcwNi03MjJmLTQ2N2UtODM1OC0zNDIyZDlmZjdhOTMiLCJjbGllbnRfaWQiOiJ3ZWJfYXBwIiwidXNlcm5hbWUiOiJhZG1pbiJ9.sqRyMKVraxeTTQWHg1rXlJ0-vfGMFNhgzAZn226VBDs",
"token_type":"bearer",
"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYWN0aW5pYSJdLCJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbIlNVUEVSX0FETUlOIiwiQURNSU4iXSwicm9sZXMiOlt7ImF1dGhvcml0eSI6IlJPTEVfU1VQRVJfQURNSU4ifV0sImF0aSI6ImMyN2UxNzA2LTcyMmYtNDY3ZS04MzU4LTM0MjJkOWZmN2E5MyIsImV4cCI6MTU0MTY0MTc1NiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9TVVBFUl9BRE1JTiJdLCJqdGkiOiI1Yzk4MjI3NC0zNjY0LTQ3ODgtYWU0YS00YWFjMGU0YzU1NjUiLCJjbGllbnRfaWQiOiJ3ZWJfYXBwIiwidXNlcm5hbWUiOiJhZG1pbiJ9.6ReMAY352Cg9irDqYNzWAfi8Ckr13v6PSYe42gsOPV8",
"expires_in":299,
"username":"admin"
}
后续的请求头中需要添加参数Authorization,值为登录请求中的access_token的值。
提取方法如下:
右键点击登录请求->Add->Post Processors->JSON Extractor
JSON Extractor中的配置如下:
其中,Names of created variables是提取出的变量名,JSON Path expressions为响应报文的提取表达式,可以通过${access_token}方式引用。可以将这个变量放在HTTP请求头管理器中,这样就不需要每个请求都配置一次头参数了:
如果想查看参数提取的是否正确,可以添加一个Debug Sampler打印参数值进行查看。右键->Add->Sampler->Debug Sampler:
可以看到access_token的值已经获取到了: