SoapUI - 使用 testrunner.bat 时强制端点 URL
SoapUI - force endpoint URL when using testrunner.bat
我正在尝试 运行 针对两个不同端点的 SoapUI 测试套件,我通过触发两个 test运行ner 命令并提供两个不同的“-e”参数值来执行此操作。
问题是我的每个测试用例都使用一个我正在测试的 API,为此我确实需要使用在 -e 参数下传递的端点,以及另一个 API 应该保持静态。 (第二个 API 是一个帮助程序 API,它为第一个 API 设置环境以使其能够工作)。因此,如果我使用 -e 参数,它会破坏我的测试,因为它强制第二个 API 到与第一个 API.
相同的端点
到目前为止我尝试的是使用以下 groovy 脚本强制特定测试步骤的端点值,但是它被忽略或者可能是脚本 运行s 在端点设置之前,我不确定。
TestSuite 安装脚本:
def testCases = testSuite.getTestCaseList()
for(testCase in testCases)
{
def testSteps = testCase.getTestStepList()
for(testStep in testSteps)
{
if(testStep.name == "my name")
{
testStep.setPropertyValue('endpoint','http://force.it');
}
}
}
我还能做些什么来解决这个问题以避免重复测试?
如果你是对的,e
参数似乎覆盖了所有端点,包括你在设置脚本中设置的端点。
那么我会针对您的情况采用以下方法。您可能已经知道 SOAPUI 具有不同级别的属性(testSuite、testCase、项目、全局),您可以使用这些属性在测试之间共享信息。
问题是您可以使用此属性来设置端点并在 testrunner 命令中传递属性值。
为所有使用全局 属性:
测试第一个 API 的测试请求设置端点
${#Project#endpointAPI1}
对于第二个 API 将端点 url 设置为:
${#Project#endpointAPI2}
注意:如果您不想一一设置端点,您可以使用与您在问题中显示的脚本类似的 groovy 脚本 testStep。
设置完成后,您可以使用以下属性为您的两种情况调用测试运行器:
然后要测试您的案例,您可以添加以下属性,其中 -P
属性是在项目级别添加的。
api1 的第一个端点
-PendpointAPI1=http://one_endpointAPI1.com -PendpointAPI2=http://endpointAPI2.com
api1 的第二个端点
-PendpointAPI1=http://second_endpointAPI1.com -PendpointAPI2=http://endpointAPI2.com
请注意,我还为端点 API2 使用了一个变量,但是如果这是静态的并且在两个测试之间没有变化而不是使用 ${#Project#endpointAPI2}
,您可以直接设置 url此服务并仅传递 属性 -PendpointAPI1
.
希望对您有所帮助,
我正在尝试 运行 针对两个不同端点的 SoapUI 测试套件,我通过触发两个 test运行ner 命令并提供两个不同的“-e”参数值来执行此操作。
问题是我的每个测试用例都使用一个我正在测试的 API,为此我确实需要使用在 -e 参数下传递的端点,以及另一个 API 应该保持静态。 (第二个 API 是一个帮助程序 API,它为第一个 API 设置环境以使其能够工作)。因此,如果我使用 -e 参数,它会破坏我的测试,因为它强制第二个 API 到与第一个 API.
相同的端点到目前为止我尝试的是使用以下 groovy 脚本强制特定测试步骤的端点值,但是它被忽略或者可能是脚本 运行s 在端点设置之前,我不确定。
TestSuite 安装脚本:
def testCases = testSuite.getTestCaseList()
for(testCase in testCases)
{
def testSteps = testCase.getTestStepList()
for(testStep in testSteps)
{
if(testStep.name == "my name")
{
testStep.setPropertyValue('endpoint','http://force.it');
}
}
}
我还能做些什么来解决这个问题以避免重复测试?
如果你是对的,e
参数似乎覆盖了所有端点,包括你在设置脚本中设置的端点。
那么我会针对您的情况采用以下方法。您可能已经知道 SOAPUI 具有不同级别的属性(testSuite、testCase、项目、全局),您可以使用这些属性在测试之间共享信息。
问题是您可以使用此属性来设置端点并在 testrunner 命令中传递属性值。
为所有使用全局 属性:
测试第一个 API 的测试请求设置端点${#Project#endpointAPI1}
对于第二个 API 将端点 url 设置为:
${#Project#endpointAPI2}
注意:如果您不想一一设置端点,您可以使用与您在问题中显示的脚本类似的 groovy 脚本 testStep。
设置完成后,您可以使用以下属性为您的两种情况调用测试运行器:
然后要测试您的案例,您可以添加以下属性,其中 -P
属性是在项目级别添加的。
api1 的第一个端点
-PendpointAPI1=http://one_endpointAPI1.com -PendpointAPI2=http://endpointAPI2.com
api1 的第二个端点
-PendpointAPI1=http://second_endpointAPI1.com -PendpointAPI2=http://endpointAPI2.com
请注意,我还为端点 API2 使用了一个变量,但是如果这是静态的并且在两个测试之间没有变化而不是使用 ${#Project#endpointAPI2}
,您可以直接设置 url此服务并仅传递 属性 -PendpointAPI1
.
希望对您有所帮助,