我正在尝试对公开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。