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.

希望对您有所帮助,