Groovy DataSink中的属性扩展
我正在尝试将测试结果写入ReadyAPI中带有时间戳的文件。我有一个DataGen,它在第一步中创建时间戳,然后在DataSink中,我在out文件的文件名中使用该时间戳。我听说在DataSink中允许进行属性扩展,但没有创建我的文件 我是否需要先初始化并创建文件(Groovy脚本) 输出数据链接中的文件配置:Groovy DataSink中的属性扩展,groovy,ready-api,Groovy,Ready Api,我正在尝试将测试结果写入ReadyAPI中带有时间戳的文件。我有一个DataGen,它在第一步中创建时间戳,然后在DataSink中,我在out文件的文件名中使用该时间戳。我听说在DataSink中允许进行属性扩展,但没有创建我的文件 我是否需要先初始化并创建文件(Groovy脚本) 输出数据链接中的文件配置:C:/Users/xxxxxx/Desktop/Projects/xxx/TestResults/OutFile{DataGen#time}.xlsx DataGen配置: 测试步骤
C:/Users/xxxxxx/Desktop/Projects/xxx/TestResults/OutFile{DataGen#time}.xlsx
DataGen配置:
测试步骤
更新:上次运行的时间戳正在数据链路中使用。那么让我们假设这些是运行:
运行1:8:00:00 AM->时间戳值
运行2:8:15:00 AM->时间戳值8:00:00 AM
运行3:8:30:00 AM->时间戳值8:15:00 AM
看起来datasink保留了属性的最后一个缓存版本,并且在新运行开始之前不会更新,这很奇怪 如果
DataGen
step除了创建时间戳之外没有执行任何操作,那么我建议尝试以下操作:
- 将
步骤替换为DataGen
测试步骤Groovy脚本
- 将下面的脚本内容放入
Groovy脚本中
def dateTime=new Date()
def fileName=“C:/Users/xxxxxx/Desktop/Projects/xxx/TestResults/OutFile_${dateTime}.xlsx”
context.testCase.setPropertyValue('DATA\u SINK\u FILE\u PATH',文件名为字符串)
- 对于文件名,请使用-
${TestCase\DATA\u SINK\u file\u PATH}
- 问题根本不在于时间戳或文件创建。问题是试图在DataSink中使用属性扩展。使用时间戳作为文件名的唯一方法是在测试用例拆卸脚本中创建它。这可确保所有出口均已关闭,且无锁到位
要解决此问题,请在测试期间在DataSink中使用要写入的临时文件。然后在拆卸脚本中,创建时间戳,创建新的输出文件,并将旧文件的内容写入其中
下面是我最终使用的Groovy脚本:
import jxl.*
import jxl.write.*
import java.text.SimpleDateFormat
def timestamp = ''
timestamp = new Date().format('yyyy_MM_dd_HH_mm_ss')
def tempFile = context.testCase.getPropertyValue('tempFile')
def output = tempFile +"_" + timestamp + ".xlsx"
tempFile += ".xlsx"
new File(output) << new File(tempFile).bytes
导入jxl*
导入jxl.write*
导入java.text.simpleDataFormat
def时间戳=“”
时间戳=新日期().格式('yyyy\u MM\u dd\u HH\u MM\u ss')
def tempFile=context.testCase.getPropertyValue('tempFile')
def输出=临时文件+“”+时间戳+”.xlsx”
tempFile+=“.xlsx”
新文件(输出)谢谢,这无疑是朝着正确方向迈出的一步。但奇怪的事情正在发生。。请参阅updateGlad以获得帮助。这证明了房地产扩张是有效的DataGen
我们无法修复,因为这不是我们的手。我相信这个答案有助于在实现所需功能的同时进一步推进。所以,如果你能接受它作为答案,我将不胜感激。