我正在使用SoapUI Pro。 SoapUI站点说我应该能够在测试执行期间随时设置上下文变量并获取这些值。在帮助中它说:
一种常见的使用场景是通过将相应的计数器和集合保存到上下文并使用它们来根据需要控制流来循环或跟踪进度。
如果我使用开箱即用的“Run TestCase”测试步骤,我无法使用它。被调用的测试似乎没有传递上下文信息。
这是一个非常基本的例子。在我的原始测试中,我添加了一些Groovy脚本,说明了这一点:
context.PassedInTest = "Is this passed in?" log.info(context.PassedInTest)
然后在我的调用测试中,我有另一个Groovy脚本说:
log.info(context.PassedInTest)
执行测试后,日志显示:"Is this passed in?"
用于原始测试,但日志显示null
用于被叫测试:
Mon Oct 27 12:59:45 EDT 2014:INFO:Is this passed in?
Mon Oct 27 12:59:56 EDT 2014:INFO:null
如果在SoapUI中使用开箱即用的“Run TestCase”测试步骤(即不使用Groovy脚本),是否有办法传入上下文?我做错了什么?
答案 0 :(得分:0)
我设法让这个工作,但我不能说它是不是hacky ......
考虑以下项目结构:
Project
|-CallingTestSuite
| |-CallingTestCase
| |-TestSteps
| |-LocalScript (Groovy TestStep)
| |-RemoteScript (Run TestCase TestStep)
|-CalledTestsuite
|-CalledTestCase
|-TestSteps
|-CalledScript (Groovy TestStep)
现在,你不能将LocalScript的上下文传递给CalledScript(至少我没有找到办法)。 但是,您可以从CalledScript访问LocalScript的内容。
LocalScript:
context.PassedInTest = "Is this passed in?"
log.info(context.PassedInTest)
CalledScript:
if (context.getProperty("#CallingTestRunContext#") != null){
log.info(context.getProperty("#CallingTestRunContext#").PassedInTest);
}
请记住,它需要作为CallingTestSuite,CallingTestCase或Project执行,否则目标上下文将无法使用。