如何在 OpenTest 中为 GET 上的基本身份验证提供正确的标头?



我正在尝试对公开API的测试管理系统进行GET调用。我想在HTTPRequest的标头中提供基本身份验证,就像在OT中作为操作一样提供。

includes: login.js
actors:
- actor: WEB
segments:
- segment: 1
actions:
- script: var xUsername = $env("X_USERNAME");
- script: var xPassword = $env("X_PASSWORD");
- script: $log("This is the username " + xUsername);
- script: $log("This is the password " + xPassword);
- description: Sample Reading testid
action: org.getopentest.actions.HttpRequest
args:
$checkpoint: true
$localData:
testRailCaseInfo: $output.body
url: https://sub.domain.io/api/v2/get_results/1234
headers:
Content-Type: application/json
Authorization: Basic xUsername xPassword
verb: GET

这是对的吗?

这里有两种方法可以做到这一点(请注意我没有测试这段代码)。您可以使用 JavaScript 表达式构建Authorization标头值,

- description: Read test ID
action: org.getopentest.actions.HttpRequest
args:
url: https://sub.domain.io/api/v2/get_results/1234
verb: GET
headers:
Content-Type: application/json
Authorization: |
$script
"Basic " + $base64($env("X_USERNAME") + ":" + $env("X_PASSWORD"))

或者提前在脚本操作中生成标头值:

- script: |
// Build the authentication header
var authHeader =
"Basic " + $base64($env("X_USERNAME") + ":" + $env("X_PASSWORD"));
- description: Read test ID
action: org.getopentest.actions.HttpRequest
args:
url: https://sub.domain.io/api/v2/get_results/1234
verb: GET
headers:
Content-Type: application/json
Authorization: $script authHeader         

我可能应该解释一下这两个示例中的角色或$script前缀是什么。当动作参数的值以美元前缀符号(如$json$data$format等)开头时,测试参与者会理解表达式是 JavaScript 代码,计算表达式并使用结果作为参数的值。当 JS 表达式不以美元前缀符号开头时(例如,我们的表达式分别以"Basic"authHeader开头),我们必须在表达式前面加上$script后跟一个或多个空格字符,让测试参与者知道后面的字符串是 JavaScript 代码,而不仅仅是普通的字符串文字。

至于基本身份验证方案的格式,您可以在此处找到更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization。

相关内容

  • 没有找到相关文章

最新更新