小编Mar*_*ark的帖子

如何为soapUI MockService使用外部响应文件的相对路径

我做了什么

我正在使用soapUI(3.6.1免费版)模拟服务来向我正在测试的2个客户端应用程序提供特定数据.使用一些简单的Groovy脚本,我设置了一些模拟操作,以根据客户端应用程序发出的请求从特定文件中获取响应.

模拟响应的静态内容是:

${responsefile}
Run Code Online (Sandbox Code Playgroud)

操作调度脚本窗格中的groovy是:

def req = new XmlSlurper().parseText(mockRequest.requestContent)
if (req =~ "CategoryA")
{
    context.responsefile = new File("C:/soapProject/Test_Files/ID_List_CategoryA.xml").text
}
else
{
    context.responsefile = new File("C:/soapProject/Test_Files/ID_List_CategoryB.xml").text
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,当客户端应用程序向包含字符串CategoryA的模拟服务发出请求时,soapUI返回的响应是文件ID_List_CategoryA.xml的内容

我正在努力实现的目标

这一切都适用于groovy中的绝对路径.现在我想将soapUI项目文件和外部文件的整个集合放入一个包中,以便于重新部署.从我对soapUI的阅读中我希望这就像将项目资源根值设置为$ {projectDir}并将路径更改为:

def req = new XmlSlurper().parseText(mockRequest.requestContent)
if (req =~ "CategoryA")
{
    context.responsefile = new File("Test_Files/ID_List_CategoryA.xml").text
}
else
{
    context.responsefile = new File("Test_Files/ID_List_CategoryB.xml").text
}
Run Code Online (Sandbox Code Playgroud)

...请记住,soapUI项目xml文件位于C:/ soapProject /

我到目前为止所做的一切

所以,这不起作用.我尝试过相对路径的变体:

  • ./Test_Files/ID_List_CategoryA.xml
  • /Test_Files/ID_List_CategoryA.xml
  • Test_Files/ID_List_CategoryA.xml

一篇文章指出,soapUI可能会将项目文件父目录视为根目录的相对路径,因此也尝试了以下变体:

  • ./soapProject/Test_Files/ID_List_CategoryA.xml
  • /soapProject/Test_Files/ID_List_CategoryA.xml
  • soapProject/Test_Files/ID_List_CategoryA.xml

如果没有这个工作,我尝试在groovy脚本中使用$ {projectDir}属性,但是所有这些尝试都失败了"没有这样的属性:mockService for class:Script [n]"错误.Admittefly,当我试图这样做时,我真的在摸索.

我尝试使用这篇文章和其他人的信息:我如何使soapUI附件路径相对?

......没有运气.在该帖子的解决方案代码中用"mock"(以及其他更改)替换"test"导致更多属性错误,例如

testFile = new File(mockRunner.project.getPath())
Run Code Online (Sandbox Code Playgroud)

.. 导致...

No …
Run Code Online (Sandbox Code Playgroud)

groovy soapui xmlslurper relative-path

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

groovy ×1

relative-path ×1

soapui ×1

xmlslurper ×1