微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

groovy – 如何创建正确的文件夹目录从脚本断言输出文件

我有一个文件夹结构情况我想要求建议.下面是一个特定项目的屏幕截图:

enter image description here

现在,我现在有一段代码,它在测试套件级别运行一个设置脚本,它创建一个“Test Run”文件夹目录,并且在测试用例级别断言中创建的所有文件进入“Test Run”夹.以下是测试套件设置脚本的代码和将文件放在该文件夹中的代码

测试套件设置脚本,它创建“测试运行”文件夹. (每个套件具有相同的代码,但是下面显示的不同目录).在此示例中,“测试运行”文件夹位于“HotelAvail”文件夹下.对于其他套件,它位于“HotelAvailCalendar”文件夹下:

// define properties required for the script to run. 
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def dataFolder = groovyUtils.projectPath

def date = new Date()
def folderTime = date.format("yyyy-MM-dd HH-mm-ss")


//Create a folder directory for the responses
RootResultTestFolder = dataFolder + "\\HotelAvail\\Test Run " + folderTime + "\\"
CreateResultTestFolder = new File(RootResultTestFolder)
CreateResultTestFolder.mkdir()


context.setProperty( "RootResultTestFolder",RootResultTestFolder )

在每个测试用例中,它们包含一个“ReadData”groovy脚本步骤,用于在相关的“测试运行”文件夹中创建文件夹,然后每个测试用例都包含对其相关服务的SOAP请求,并且在其断言中,它们包含下面的代码文件放在“读取数据”中创建的文件夹中的文件夹中:

在ReadData groovy脚本中:

// define properties required for the script to run. 
def testFolder = context.getProperty( "RootResultTestFolder")

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 

def date = new Date()
//def folderTime = date.format("yyyy-MM-dd HH-mm-ss")


RootResultFolder = testFolder + testRunner.testCase.name + "\\"
CreateResultFolder = new File(RootResultFolder)
CreateResultFolder.mkdir()

context.setProperty( "RootResultFolder",RootResultFolder)

一个soap请求脚本断言:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def currentRow = context.getProperty("currentRow")
def dataFolder = context.getProperty("RootResultFolder")
def hotelCode = messageExchange.modelItem.testStep.testCase.getPropertyValue("HotelCode")
def hotelCodeTrim = hotelCode.toString().replace("|","")
def serviceRequest = context.expand( '${GetHotelAvailability#Request}'  )
def serviceResponse = context.expand( '${GetHotelAvailability#Response}'  )
def date = new Date().format("yyyy-MM-dd")
def time = new Date().format("HH.mm.ss")
def fileName =  dataFolder + hotelCodeTrim + " Extranet_GetHotelAvailability.txt"
log.info "TestRecord: " + fileName
def logFile = new File(fileName)

//--- assert code goes here ----

def testResult = new StringBuffer()
testResult.append "Test run on DateTime Stamp: " +date+ " " + time 
testResult.append "\n\nService Request:\n\n"
testResult.append(serviceRequest.toString())
testResult.append "\n\nService Response:\n\n"
testResult.append(serviceResponse.toString())

// Now create and record the result file
logFile.write(testResult.toString())

所以当我在项目或测试套件级别运行测试的文件夹目录看起来像这样(使用’HotelAvail’的示例):

enter image description here


enter image description here

以下文件夹适用于每个测试用例.

enter image description here

每个文件夹中的相关文件,相关文件夹中的文件示例:

enter image description here

所以我想到这个设置的原因是,它是每个测试运行的漂亮和干净,而不是创建区域中的所有文件夹,它创建在“测试运行”文件夹中,属于每个测试套件文件夹“HotelAvail”或“HotelAvailCalendar ”.

现在更多的测试套件将进入这个项目,但是我要面对的问题是,如果用户决定不在测试套件级别运行并且想要在测试用例级别运行,那么将不会创建“测试运行”文件夹因为它在“测试套件”设置脚本中,这意味着断言将失败,因为它找不到“测试运行”.但是,如果我将“测试运行”文件夹放在所有测试用例级设置脚本中,如果我在测试套件级别运行测试,将创建多个“测试运行”文件夹.如果我没有“测试运行”文件夹,那么所有的测试文件夹将被组合成一个文件夹.

你可以看到我的困境,我想知道在这种情况下实际上是最好的方法.如果有人可以为我提供一个示例代码或项目,它是非常感谢.

谢谢,

解决方法

我建议您使用以下代码将它们相对于项目进行放置

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)

// define location relative to SOAPUI project.
String projectPath = groovyUtils.projectPath + "/destination/"

context.setProperty( "RootResultFolder",projectPath)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐