我正在尝试对公开API的测试管理系统进行GET调用。我想在OT中提供的HTTPRequest标头中提供基本身份验证,就像这样。
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
这正确吗?
答案 0 :(得分:1)
有两种方法可以做到这一点(请注意,我没有测试此代码)。您可以使用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。