【问题标题】:How to develop test-automation using Postman when OAuth 2.0 authorization is required需要 OAuth 2.0 授权时如何使用 Postman 开发测试自动化
【发布时间】:2017-06-03 09:52:17
【问题描述】:

我有一个使用 OAuth 2.0 进行授权的 ASP.NET Web API 2。假设我有一个简单的 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 请求新令牌。但是这种情况不适合测试自动化。在测试自动化中,我想消除任何人工交互。

【问题讨论】:

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


    【解决方案1】:

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

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

    var body = JSON.parse(responseBody);
    pm.environment.set('AccessToken', body.access_token);
    

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

    Authorization: Bearer {{AccessToken}}
    

    希望这会有所帮助。

    【讨论】:

    • 嗨@Pandit81 - 知道如何在 Postman 的集合中对保存的项目进行排序/重新排序,因此我确保“获取令牌”发生在所有其他项目和测试之前?
    • @Tohid 文件夹中的单个请求可以按照您想要的任何顺序手动放置,并按该顺序运行。对于文件夹,我使用数字预设,例如 101 Access Token、102 Get Request 等。
    • 这里是订购问题的详细答案> stackoverflow.com/questions/43336057/…
    猜你喜欢
    • 1970-01-01
    • 2014-01-31
    • 2017-07-23
    • 2016-12-11
    • 2023-03-04
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多