加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:31:24 所属栏目:大数据 来源:网络整理
导读:我有一个文件夹结构情况我想要求建议.下面是一个特定项目的屏幕截图: 现在,我现在有一段代码,它在测试套件级别运行一个设置脚本,它创建一个“Test Run”文件夹目录,并且在测试用例级别断言中创建的所有文件进入“Test Run”夹.以下是测试套件设置脚本的代码
我有一个文件夹结构情况我想要求建议.下面是一个特定项目的屏幕截图:

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 + "HotelAvailTest 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 "nnService Request:nn"
testResult.append(serviceRequest.toString())
testResult.append "nnService Response:nn"
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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读