soapui - 如何在设置脚本中执行现有测试用例,并从响应中获取对 SOAP UI 中当前测试用例的值?
问题描述
我有测试用例(测试用例 1),其中包含我想在启动时运行的 REST 请求,所以我禁用它并通过负载测试的设置脚本(测试用例 2)调用它。
但是,要运行负载测试 REST 请求,我需要来自测试用例 1 响应的值。如何将一个测试用例中的值传递给加载 UI REST 请求?
测试数据中一个 REST 请求的响应(测试用例 1)
{
"VotingSessionID": 1326,
"Name": "Test Vote Session",
"Questions": [
{
"VotingQuestionID": 4273,
"Text": "Test A",
"QuestionNumber": 1,
"Options": [
{
"VotingOptionID": 17328,
"OptionText": "Option A"
},
{
"VotingOptionID": 17329,
"OptionText": "Option B"
},
{
"VotingOptionID": 17330,
"OptionText": "Option C"
}
],
"IsActive": false
}
我需要将“VotingOptionID”的值传递给测试用例 2 中的 REST 请求之一。
解决方案
要在设置脚本中运行测试步骤,您可以这样做:
def testSuiteName = "yourTestSuiteName"
def testCaseName = "yourTestCaseName"
def testStepName = "yourTestStepName"
def testStep = context.testCase.testSuite.project.testSuites[testSuiteName].testCases[testCaseName].testSteps[testStepName]
testStep.run(testRunner, context)
要检索 VotingQuestionID 的值,我看到的最简单的方法是在测试用例 1 中提取它(应该在测试用例 2 的设置脚本中调用)。
那么你可以做的是:
首先,创建一个项目级别的属性(双击您的项目 -> 底部的属性选项卡)
其次,在测试用例 1 的测试步骤中添加 Script Assertion 以在测试步骤运行时检索 VotingQuestionID 的值。在脚本断言中,您可以添加以下命令:
import groovy.json.JsonSlurper
def response = new JsonSlurper().parseText(messageExchange.responseContent)
context.testCase.testSuite.project.setPropertyValue("yourProperty", response.Questions[0].VotingQuestionID)
第三,使用以下格式在您的测试用例 2 中使用该属性
${#Project#yourProperty}
推荐阅读
- react-native - FlatList React Native 与 Redux 优化
- go - 如何在 Go 程序中将字符串评估为 Go 代码?
- python - 如何反向打印一个单词,一个字母一个字母。示例“现在最好的歌曲是什么”>“won thgir gnos tseb eht si tahW
- hyperlink - 在 WKWebView 中打开外部链接(不是外部)
- javascript - Rails 控制器生成控制器错误
- sql - 使用 sp_MSForEachTable 删除所有数据而不填满事务日志
- java - 如何让 JFrame “等待”?
- fortran - IEEE_UNDERFLOW_FLAG 是否暂停了我的 fortran 代码?
- android - Gradle复制任务不复制文件
- spring - Spring Boot:Repository 接口 sql 注入保护