如何以编程方式创建restrequest步骤?

时间:2018-05-02 15:17:01

标签: groovy soapui

我目前正在尝试以编程方式构建testCases。

来自输入招摇的每个新资源必须具有相应的testCase。

我设法检测哪个资源没有testCase,我可以创建testCase,但是当它要创建testStep时我遇到了问题。

我目前正在执行以下过程:

namespace Imperium {
    class Soldier
    {
        public function getNameSpace()
        {
            return __NAMESPACE__;
        }
    }
}

namespace Chaos {
    class Soldier
    {
        public function getNameSpace()
        {
            return __NAMESPACE__;
        }
    }
}

namespace {
class Scanner
{
    public function scan($Soldier)
    {
        if ($Soldier->getNameSpace() == "Imperium")
        {
            echo "yes\n";
        }
        else
        {
            echo "no\n";
        }
    }
}

    $soldier = new Imperium\Soldier();
    $scan = new Scanner();
    $scan->scan($soldier); /* Here giving it a soldier instance from imperium namespace */

}

这个ALMOST有效!但是当它到达testStep创建时,我在readyAPI中弹出一个“New RestRequest”,要求我“选择现有的请求或REST方法,或者创建一个新请求”。

如何以编程方式执行此步骤?

感谢您的帮助

亚历

1 个答案:

答案 0 :(得分:0)

我发现了如何继续。事实上,我想用新版本的swagger输入文件新更新的资源自动创建一个带有testStep的testCase。我进行如下: 我得到了资源列表:

restServiceList = testRunner.testCase.testSuite.project.getInterfaceList()

从每个资源中,我获得它包含的API列表:

    restServiceList.each{
    inter -> 
    inter.each{
        // pour chaque bloc de ressources, on va recuperer la liste des API exposees
        ops = it.getOperationList()
        found = false
        ops.find(){
            // on compare le nom de l'API on nom du test - si ca matche, on sort
            //log.info it.getName()

            if(it.getName() == tc.getName())
            {
                // API trouvee, on recupere la liste des requetes
                reqList = it.getRequestList()
                found = true
            }
        }
    }
}

对于每个API请求,我创建相应的testStep

    reqList.each{
    restRequest ->
    testStepConfig = RestRequestStepFactory.createConfig( restRequest, tc.getName() );
    testStepConfig.setName("Request 1") // Attention, voir ce que ca donne sur une resource multiple !

    // log.info "testStepConfig = " + testStepConfig.toString()
    // ajout du step dans le testCase
    tc.addTestStep( testStepConfig )}

此外,我创建了与请求参数相关的自定义属性(因为我的API具有通用参数)

def requestParameters = testStepConfig.config.restRequest.parameters.entryList ...

这很有效。