如何在需要OAuth 2.0授权时使用Postman开发测试自动化

时间:2017-01-18 20:53:33

标签: asp.net-web-api automated-tests asp.net-web-api2 postman newman

我有一个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请求的标头中使用该令牌:

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来请求新令牌。但是这种情况不适合测试自动化。在测试自动化中,我想删除任何人为干预。

1 个答案:

答案 0 :(得分:2)

很简单,在运行时获取访问令牌并将其保存到环境变量中。然后在下一个获取请求中使用它。

在获取令牌请求中,请在测试部分中执行此操作:

var body = JSON.parse(responseBody);
postman.setEnvironmentVariable("AccessToken", body.access_token);

在主要的Get请求中,您可以使用环境变量:

Authorization: Bearer {{AccessToken}}

希望这有帮助。