我正在尝试使用SOAP UI为API自动化生成动态JSON请求体。我正在使用groovy脚本来做同样的事情。 我无法将动态生成的属性值传递给请求中的JSON主体。有人可以帮忙吗?
我的Groovy脚本
import java.util.Random
//generating random values
Random rand = new Random()
String brandName = "BrandName" + rand.nextInt(100000)
String pageTitle = "BrandPageTitle" + rand.nextInt(100000)
//setting test case properties
testRunner.testCase.setPropertyValue("name", brandName);
testRunner.testCase.setPropertyValue("page_title", pageTitle);
这是我的POST请求的JSON主体。我不确定我在下面的JSON中访问变量的方式是否正确
{
"name": "${brandName}",
"page_title": "${pageTitle}"
}
我也尝试过这个。 ' POSTCreateNewBrand'是我的TestCase名称和'名称'是property_name
{
"name": "${#POSTCreateNewBrand#name}",
"page_title": "${#POSTCreateNewBrand#page_title}"
}
当我运行测试时,我发现名称字段未作为请求正文的一部分提供,并且看到以下错误
<errors>
<error>
<status>400</status>
<message>The required field 'name' was not supplied.</message>
</error>
</errors>
答案 0 :(得分:8)
要使用TestCase
级别的属性,不必使用TestCase
名称,请直接使用#TestCase#
常量,后跟属性名称,如下所示:
{
"name": "${#TestCase#name}",
"page_title": "${#TestCase#page_title}"
}
此外,同样适用于Project
,TestSuite
等等;来自SOAPUI documentation的TestStep
级别的名称:
#Project# - 引用Project属性(跨特定SoapUI项目的引用属性)
#TestSuite# - 引用包含TestSuite的TestSuite属性
#TestCase# - 引用包含TestCase
中的TestCase属性#MockService# - 引用包含MockService的MockService属性
#Global# - 引用全局属性。在文件&gt;首选项&gt;全局属性选项卡中找到。所有项目的参考属性
#System# - 引用系统属性。在帮助&gt;系统属性中找到。
#Env# - 引用环境变量
[TestStep name]# - 引用TestStep属性
希望这有帮助,