SoapUI - 使用testrunner.bat时强制端点URL

时间:2015-10-28 23:03:02

标签: groovy soapui

我正在尝试针对两个不同的端点运行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');
        }
    }
}

我还能做些什么来克服这个问题,以避免重复我的测试?

1 个答案:

答案 0 :(得分:0)

如果您正确,似乎e参数会覆盖您在设置脚本中设置的所有端点。

然后我针对你的情况采用以下方法。您可能已经知道的SOAPUI具有不同级别的属性(testSuite,testCase,project,global),您可以使用此属性在测试之间共享信息。

问题是您可以使用此属性设置端点并在testrunner命令中传递属性值。

使用全局属性设置测试第一个API的所有测试请求的端点:

${#Project#endpointAPI1}

enter image description here

对于第二个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} }。

希望它有所帮助,