从脚本断言调用代码时发生空对象错误 - soapui(在脚本断言中创建测试运行器) [英] null object error when calling code from script assertion - soapui (creating test Runner in script assertion)

查看:131
本文介绍了从脚本断言调用代码时发生空对象错误 - soapui(在脚本断言中创建测试运行器)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  context.setProperty(searchA,new searchA( )); 
class searchA {

def testRunner
def searchA(testRunner){
this.testRunner = testRunner
}

def search(a,b){

def search_TestCase = testRunner.testCase.testSuite.getTestCaseByName(Search)
search_TestCase.setPropertyValue(ABC,a)
search_TestCase。 setPropertyValue(DEF,b)
search_TestCase.run(new com.eviware.soapui.support.types.StringToObjectMap(),false)



以及在不同测试套件中的断言脚本中,我将这样的代码称为上面的代码。

  scripts = messageExchange.modelItem.testStep.testCase.testSuite.project.testSuites [Test] 
scripts.testCases [Lib123 ] .testSteps [TestLib123]。run(context.getTestRunner(),context)
context.searchA.search(value1,value2)
pre>

但是这给我错误无法获得属性testCase on null object。 whats wrong here?

解决方案

现在我看不到空对象错误。问题是脚本断言中 testRunner 不可用,所以我们需要在脚本断言中像这样创建它,然后在调用方法中传递它。

  import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner 
import com.eviware.soapui.support.types.StringToObjectMap
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext

testCase = messageExchange.modelItem.testStep.testCase
tcRunner = new WsdlTestCaseRunner(testCase,new StringToObjectMap());

context.searchA.search(value1,value2,tcRunner)

这个线程帮助了我。

In a soapui groovy script test step I've this.

context.setProperty("searchA", new searchA());
class searchA{

    def testRunner
    def searchA(testRunner){
        this.testRunner=testRunner
        }

    def search(a,b){

        def search_TestCase = testRunner.testCase.testSuite.getTestCaseByName("Search")
          search_TestCase.setPropertyValue("ABC", a)
          search_TestCase.setPropertyValue("DEF", b)
          search_TestCase.run(new com.eviware.soapui.support.types.StringToObjectMap(), false)

        }
    }

and in an assertion script in a different test suite I am calling the above code like this.

scripts = messageExchange.modelItem.testStep.testCase.testSuite.project.testSuites["Test"]
scripts.testCases["Lib123"].testSteps["TestLib123"].run(context.getTestRunner(),context)
context.searchA.search("value1","value2")

but this gives me error "can not get property testCase on null object". whats wrong here?

解决方案

I am not seeing null object error now. The issue was that testRunner is not available in script assertion so we need to create it like this in script assertion and then pass it in the caller method.

import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner
import com.eviware.soapui.support.types.StringToObjectMap
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext

testCase = messageExchange.modelItem.testStep.testCase
tcRunner = new WsdlTestCaseRunner( testCase, new StringToObjectMap() );

context.searchA.search("value1","value2",tcRunner)

This thread helped me.

这篇关于从脚本断言调用代码时发生空对象错误 - soapui(在脚本断言中创建测试运行器)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆