我正在尝试针对两个不同的端点运行SoapUI测试套件,我这样做是通过触发两个testrunner命令并提供两个不同的“-e”参数值。
问题是我的每个测试用例都使用了一个我正在测试的API,我需要使用在-e参数下传递的端点,以及另一个应该保持静态的API。 (第二个API是一个辅助API,它为第一个API设置环境以便能够工作)。因此,如果我使用-e参数,它会破坏我的测试,因为它会强制第二个API与第一个API相同的端点。
到目前为止我尝试使用以下groovy脚本来强制特定测试步骤的端点值,但是它被忽略或者脚本在端点设置之前运行,我不确定。
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');
}
}
}
我还能做些什么来克服这个问题,以避免重复我的测试?
答案 0 :(得分:0)
如果您正确,似乎e
参数会覆盖您在设置脚本中设置的所有端点。
然后我针对你的情况采用以下方法。您可能已经知道的SOAPUI具有不同级别的属性(testSuite,testCase,project,global),您可以使用此属性在测试之间共享信息。
问题是您可以使用此属性设置端点并在testrunner命令中传递属性值。
使用全局属性设置测试第一个API的所有测试请求的端点:
${#Project#endpointAPI1}
对于第二个API,将端点url设置为:
${#Project#endpointAPI2}
注意:如果您不想逐个设置端点,可以使用类似于您在问题中显示的groovy脚本testStep。
设置完成后,您可以使用属性为这两种情况调用testrunner:
然后,为了测试您的案例,您可以添加以下属性,并在项目级别添加-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并仅传递属性{{1} }。
希望它有所帮助,