当前位置: 首页 > 知识库问答 >
问题:

使用groovy的每个SoapUI请求的唯一属性

籍利
2023-03-14

我正在使用SoapUI的开源版本进行一些SOAP Web服务负载测试。

我希望每个请求与以前的请求尽可能不同,我不希望使用相同的属性进行负载测试。

我有一个属性文件,它有几个属性,每个属性值都调用groovy脚本从文件中读取一个随机值,并将其分配给测试用例属性,即在值字段中:

<代码>${=(DynamicPropertyScript)}

脚本:

// Load property from file
def file = new File('path')

// Create empty list for file contents
def list = [];

// Populate list with file contents
addURLstoList = {list.add(it)};
file.eachLine(addURLstoList);

// Pick a random item from list
def randomIndex = (int)Math.random()*list.size;
def randomValue = list.get(randomIndex);

// Assign random value to property
def tc = testRunner.testCase;
tc.setPropertyValue('property', randomValue);
log.info(randomValue)

如果我在测试用例开始时调用这个脚本,那么这个脚本工作得很好。我关心的是,启动时生成的属性对于每个后续请求都是相同的,这是我想要避免的。

我尝试了几件事,但最终失败了(因为我缺乏使用Groovy和SoapUI的经验)。

我在请求中尝试了一些东西

<inc:ID>${Properties#property}</inc:ID>

<inc:ID>${=(DynamicPropertyScript)}</inc:ID>

我遇到的错误:

<inc:ID>No such property: DynamicPropertyScript for class: Script4</inc:>

任何帮助都将不胜感激,此外,如果有其他方式也会有所帮助(我了解发送大量请求

谢谢:)

共有1个答案

谯乐池
2023-03-14

我希望将数据列表加载到内存中一次,以避免重复IO,然后使用Groovy表达式从测试步骤中的列表中选择需要它的随机项。可以使用上下文变量将数据保存在内存中。

下面的Groovy脚本将读取名为data1的数据文件的内容。txt,并将其加载到上下文变量中。上下文。数据变量将数据项作为列表和上下文保存。dataCount保存项目数。

您可能希望将其添加为安装脚本(针对TestSuite或TestCase),而不是在Groovy测试步骤中,以便它只运行一次。上下文变量保留在相应套件/案例运行器的范围内,因此可以在后续任何步骤中引用。

def projectDir = context.expand('${projectDir}') + File.separator
def dataFile = "data1.txt"

try 
{
    File file = new File(projectDir + dataFile)
    context.data = file.readLines()
    context.dataCount = context.data.size
} 
catch (Exception e) 
{
    testRunner.fail("Failed to load " + dataFile + " from project directory.")
    return
}

然后,从上下文中获取一个随机数据项。数据变量,根据需要输入以下表达式作为参数值或嵌入到请求主体中。

${=context.data.get((int)(Math.random()*context.dataCount))}
 类似资料:
  • 在上面的代码示例中,试图为每个请求生成唯一的txn-id。但是,观察到它正在重复使用相同的数字导致重复。我还尝试使用以下方法根据当前时间生成,当在1秒内触发超过1个请求时,它仍然会导致重复。 任何替代解决方案来为每个请求生成唯一ID,而不管并发情况如何? 提前感谢。

  • 我是SoapUI的新手,遇到了一个我不明白的问题。目标:我想在不同的测试步骤中将结果从一个Groovy脚本传递到另一个Groovy脚本。 第1步:我有一个生成GUID的Groovy脚本: 步骤2:我有一个属性转移步骤,它接受上述脚本的结果,并将其传递到HTTP请求步骤(正在工作) 步骤3:我有第二个Groovy脚本,它运行curl命令,其中需要包含相同的GUID。 第3步是问题开始的地方。如何从第

  • 我只使用了SOAP UI来测试WSDL/URL,但在这个范围内没有。我需要从SOAPUI获取请求url查询参数,并使用它们使用groovy脚本测试一些东西。 假设我有一个GetCustomers请求url,如下所示 我需要URL < code > Id = 111 < code > ModeName = ABC < code > DeltaId = 023423 中的以下内容 我在SOAP UI中

  • 我正在尝试编写一个时髦的脚本来更新 SoapUI 请求的某些 CDATA 部分。 我对SoapUI和groovy都是新手。 我已经成功地通过使用属性转移完成了我需要的事情,但是,由于我需要在几乎所有测试用例中执行相同的处理,因此我宁愿在可以从任何需要的地方调用的脚本中执行此操作。 我试图模仿groovy中的属性转移步骤,但是没有成功,因为我似乎无法访问和解析CDATA部分。 任何关于如何使用gro

  • 我从项目中的脚本执行一个脚本。 该脚本中还有另一个循环,即执行请求。之后,应该执行另外两个脚本来处理输出。这些在请求步骤之后的相同testcase中,但不会自动执行。

  • 所以我很精通java,但我刚刚开始学习groovy,并使用SOAPUI和groovy测试SOAP请求。我尝试使用groovy脚本测试一个SOAP请求,并设置请求随后用作参数来测试xml的属性值。现在,我在SOAP XML中不断得到这个错误: 但是我可以看到属性值何时被更新!我在我的测试用例的自定义属性下看到了它。传递的值应该是整数,但设置属性值只能是字符串。这可能是问题所在吗?这一切令人讨厌的部分