Testing 如何在soapui中设置一个测试步骤的超时?

Testing 如何在soapui中设置一个测试步骤的超时?,testing,soapui,Testing,Soapui,我已经在soapui中创建了一个测试步骤。我需要设置一个长的延迟,比如5分钟。我的意思是测试步骤之间没有延迟,我只需要等待一个步骤的响应。如何操作?将套接字超时设置为300000毫秒。 TestCase选项具有该测试的套接字超时设置。您不能仅为一个步骤设置此选项。因为其他答案说,无法为测试步骤设置套接字超时,但是您可以使用测试步骤和groovy测试步骤来完成此操作。您可以通过以下步骤执行此操作: 在TestCase中创建TestStep,并禁用它,因为您将从groovy运行它 创建一个Groov

我已经在soapui中创建了一个测试步骤。我需要设置一个长的延迟,比如5分钟。我的意思是测试步骤之间没有延迟,我只需要等待一个步骤的响应。如何操作?

将套接字超时设置为300000毫秒。

TestCase选项具有该测试的套接字超时设置。您不能仅为一个步骤设置此选项。

因为其他答案说,无法为
测试步骤设置套接字超时,但是您可以使用
测试步骤和
groovy测试步骤来完成此操作。您可以通过以下步骤执行此操作:

  • TestCase
    中创建
    TestStep
    ,并禁用它,因为您将从groovy运行它
  • 创建一个
    Groovy测试步骤
    ,它将在运行
    testStep
    之前更改全局套接字超时,并在执行后使用再次设置默认值
  • 您可以使用的
    groovy
    代码如下所示:

    import com.eviware.soapui.SoapUI
    import com.eviware.soapui.settings.HttpSettings
    import com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus
    
    // get the settings 
    def settings = SoapUI.getSettings();
    // save the possible previous timeout
    def bk_timeout = settings.getString(HttpSettings.SOCKET_TIMEOUT,"");
    // set the new timeout... in your case 5 minutes in miliseconds
    settings.setString(HttpSettings.SOCKET_TIMEOUT,"300000");
    // save the new settings 
    SoapUI.saveSettings();
    
    // get the testStep by name
    def testStep = testRunner.testCase.getTestStepByName('Test Request')
    // run it
    def result = testStep.run( testRunner, context )
    if( result.status == TestStepStatus.OK )
    {
        // ... if all ok    
    }
    
    // when finish set the timeout to default value again
    settings.setString(HttpSettings.SOCKET_TIMEOUT, bk_timeout)
    SoapUI.saveSettings()
    
    您的测试用例将如下所示:


    请注意,如果要检查通过
    groovy
    更改设置是否按预期工作,可以尝试修改属性,并检查
    $USER\u HOME\SOAPUI settings.xml
    中的首选项
    SOAPUI
    文件是否更改(显然,要测试它,请不要像示例
    中那样再次备份原始值:)
    )。

    我找到了一种设置testCase套接字超时的方法

    在testCase的设置脚本中,使用以下代码:

    testRunner.testCase.settings.setString("HttpSettings@socket_timeout","10000")
    
    testCase内部的所有步骤都将受到该值的影响


    全局套接字\u超时值不受此影响。

    它适用于soapui中的所有请求/响应,但如果未设置超时,我只希望进行一次测试。默认超时是什么?默认值是60秒。您可以将0设置为“无超时”
    ,这将更改全局套接字超时
    -它似乎会影响所有soapui项目。我的意思是,如果有其他测试并行运行,它们将“看到”修改的全局超时。例如,当多个测试用例包含该代码时,它们可以同步设置全局超时,并且对于其中几个测试用例,它可以小于需要的值。按照建议设置TestCase超时是否更好?在您的问题中,并没有关于并行运行测试的要求,这就是为什么我向您展示了一种可能的解决方法,可以使用全局属性来完成这项工作。然而,如果testCase级别存在套接字超时,我认为可以使用类似的groovy脚本更改此属性。我检查它,如果存在,我将更新我的答案。谢谢,我能够为测试用例设置超时:)