使用Groovy脚本在SoapUI中生成动态JSON请求主体并将其传递给POST API请求

桑迪普

我正在尝试使用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>
Albciff

要在TestCase级别中使用属性,则不必使用TestCase名称,而是直接使用#TestCase#常量,后跟属性名称,如下所示:

{
  "name": "${#TestCase#name}",
  "page_title": "${#TestCase#page_title}"
}

此外,同样适用于ProjectTestSuite依此类推;TestStep级别的名称,来自SOAPUI文档

#Project#-引用项目属性(跨特定SoapUI项目的引用属性)

#TestSuite#-在包含的TestSuite中引用TestSuite属性

#TestCase#-在包含的TestCase中引用一个TestCase属性

#MockService#-在包含的MockService中引用MockService属性

#Global#-引用全局属性。在“文件”>“首选项”>“全局属性”选项卡中找到。所有项目的参考属性

#System#-引用系统属性。在“帮助”>“系统属性”中找到。

#Env#-引用环境变量

[TestStep名称]#-引用一个TestStep属性

希望这可以帮助,

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章