如何在需要 OAuth 2.0 授权的情况下使用 Postman 开发 test-automation
How to develop test-automation using Postman when OAuth 2.0 authorization is required
我有一个 ASP.NET Web API 2,它使用 OAuth 2.0 进行授权。假设我有一个简单的 Web API 方法,例如:
GET: http://host/api/profiles/user123 (requires OAuth 2.0 token)
因此,使用 Postman,可以轻松测试此 Web API。我从 Web API OAuthAuthorization 方法获得 user123
的 OAuth 令牌,然后我在 HTTP 请求的 header 中使用该令牌:
GET /api/profiles/user123 HTTP/1.1
Host: {host}
Authorization: Bearer {Token}
Content-Type: application/json
Cache-Control: no-cache
但是,如果我保存我的测试并 运行 稍后(通过 Postman 本身或 Newman),令牌将在那时过期并且无法使用。
如何让 Newman 自动为 user123
获取新令牌并在 HTTP 请求中使用它?
注意:我知道如何使用 Postman 的 Authentication helpers 来请求新令牌。但是这个场景不符合test-automation。在 test-automation 中,我想删除任何人机交互。
很简单,在 运行 时获取您的访问令牌并将其保存到环境变量中。然后在您的下一个 Get 请求中使用它。
在获取令牌请求中,在测试部分执行此操作:
var body = JSON.parse(responseBody);
pm.environment.set('AccessToken', body.access_token);
在你的主Get请求中,你可以使用Authorization
中的环境变量 header:
Authorization: Bearer {{AccessToken}}
希望对您有所帮助。
我有一个 ASP.NET Web API 2,它使用 OAuth 2.0 进行授权。假设我有一个简单的 Web API 方法,例如:
GET: http://host/api/profiles/user123 (requires OAuth 2.0 token)
因此,使用 Postman,可以轻松测试此 Web API。我从 Web API OAuthAuthorization 方法获得 user123
的 OAuth 令牌,然后我在 HTTP 请求的 header 中使用该令牌:
GET /api/profiles/user123 HTTP/1.1
Host: {host}
Authorization: Bearer {Token}
Content-Type: application/json
Cache-Control: no-cache
但是,如果我保存我的测试并 运行 稍后(通过 Postman 本身或 Newman),令牌将在那时过期并且无法使用。
如何让 Newman 自动为 user123
获取新令牌并在 HTTP 请求中使用它?
注意:我知道如何使用 Postman 的 Authentication helpers 来请求新令牌。但是这个场景不符合test-automation。在 test-automation 中,我想删除任何人机交互。
很简单,在 运行 时获取您的访问令牌并将其保存到环境变量中。然后在您的下一个 Get 请求中使用它。
在获取令牌请求中,在测试部分执行此操作:
var body = JSON.parse(responseBody);
pm.environment.set('AccessToken', body.access_token);
在你的主Get请求中,你可以使用Authorization
中的环境变量 header:
Authorization: Bearer {{AccessToken}}
希望对您有所帮助。