San*_*eep 2 api groovy automation json soapui
我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
这是我的POST请求的JSON主体.我不确定我访问下面JSON中的变量的方式是正确的
{
"name": "${brandName}",
"page_title": "${pageTitle}"
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个.'POSTCreateNewBrand'是我的TestCase名称,'name'是property_name
{
"name": "${#POSTCreateNewBrand#name}",
"page_title": "${#POSTCreateNewBrand#page_title}"
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的测试时,我发现名称字段未作为请求正文的一部分提供,并看到以下错误
<errors>
<error>
<status>400</status>
<message>The required field 'name' was not supplied.</message>
</error>
</errors>
Run Code Online (Sandbox Code Playgroud)
要在TestCase级别中使用属性,不必使用TestCase名称,请使用直接#TestCase#常量,后跟属性名称,如下所示:
{
"name": "${#TestCase#name}",
"page_title": "${#TestCase#page_title}"
}
Run Code Online (Sandbox Code Playgroud)
此外,同样适用于Project,TestSuite等等; 它的TestStep级别名称来自SOAPUI文档:
#Project# - 引用Project属性(跨特定SoapUI项目的引用属性)
#TestSuite# - 引用包含TestSuite的TestSuite属性
#TestCase# - 引用包含TestCase的TestCase属性
#MockService# - 引用包含MockService的MockService属性
#Global# - 引用全局属性.在文件>首选项>全局属性选项卡中找到.所有项目的参考属性
#System# - 引用系统属性.在帮助>系统属性中找到.
#Env# - 引用环境变量
[TestStep name]# - 引用TestStep属性
希望这可以帮助,