我做了什么
我使用的soapUI(3.6.1免费版)模拟服务,具体数据为多达我测试2个客户端应用程序。 随着一些简单的Groovy脚本我已经建立了一些模拟操作来从基于客户端应用程序发出的请求特定文件的响应。
模拟响应的静态内容是:
${responsefile}
在操作调度脚本窗格中的常规是:
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
}
在这个例子中,当客户端应用程序发出到包含字符串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
}
...保持在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
当这些方法都工作,我试图使利用$ {} PROJECTDIR财产的Groovy脚本中,但所有这些努力都失败了“没有这样的属性:mockService类:脚本[N]”的错误。 Admittefly,试图这样做,当我真的摸索周围。
我尝试使用这个职位和其他信息: 怎样使相对的soapUI附件路径?
......没有任何的运气。 更换“试验”和“模拟”,(其它变化之中),从该职位的解决方案代码导致更多属性的错误,例如,
testFile = new File(mockRunner.project.getPath())
.. 导致...
No such property: mockRunner for class: Script3
我想我需要
在帖子中,我已经找到了与此相关的问题都集中在soapUI的测试套件。 我真的需要一个解决方案,MockService中心或至少揭示了它如何为不同MockServices进行处理,而不是测试套件的一些情况。
任何帮助是极大的赞赏。 谢谢。 标记。
解决方案-通过提供GargantuChet
以下包括由建议的修改GargantuChet解决试图通过Groovy脚本的范围内定义一个新PROJECTDIR对象来访问$ {PROJECTDIR}属性和使得能够使用相对路径的问题:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def projectDir = groovyUtils.projectPath
def req = new XmlSlurper().parseText(mockRequest.requestContent)
if (req =~ "CategoryA")
{
context.responsefile = new File(projectDir, "Test_Files/ID_List_CategoryA.xml").text
}
else
{
context.responsefile = new File(projectDir, "Test_Files/ID_List_CategoryB.xml").text
}