2016-08-22 137 views
1

我试图将测试结果写入ReadyAPI中的时间戳文件。我有一个DataGen,它在第一步创建时间戳,然后在DataSink中创建时间戳,我在out文件的文件名中使用该时间戳。我听说DataSinks允许Property Expansion,但我的文件没有被创建。DataSink中的属性扩展

我需要初始化并创建文件(Groovy脚本)吗?

退房DataSink文件配置:C:/Users/xxxxxx/Desktop/Projects/xxx/TestResults/OutFile_${DataGen#time}.xlsx

DataGen配置: enter image description here

enter image description here

测试步骤

enter image description here

UPDATE:
上次运行的时间戳在datasink使用。我们假设这些是运行:
运行1:8:00:00 AM - >时间戳值
试验2:上午08时15分00秒 - >时间戳的值上午8点00分○○秒
第3趟:上午8时30分00秒 - >时间戳的值上午08时15分00秒

它似乎数据链接留下了属性的最后一个缓存版本,并且在新运行开始之前不会更新。

回答

0

的问题是不是与时间戳或文件创建的。该问题试图在DataSink中使用属性扩展。使用时间戳作为文件名的唯一方法是在测试案例撕裂脚本中创建它。这确保了所有的文件都关闭了,没有锁。

要解决此问题,请在测试过程中使用临时文件写入DataSink中。然后在TearDown脚本中,创建您的时间戳,创建新的输出文件,并将旧文件的内容写入其中。

这里是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 
2

这很奇怪。

如果DataGen步骤没有做的比时间戳创建任何其他的话,我会建议尝试以下方法:

  • 更换DataGen步与Groovy Script测试步骤。
  • 将下面的脚本内容放入Groovy Script
def dateTime = new Date().format('yyyy_MM_ddHHmmss') 
def fileName = "C:/Users/xxxxxx/Desktop/Projects/xxx/TestResults/OutFile_${dateTime}.xlsx" 
context.testCase.setPropertyValue('DATA_SINK_FILE_PATH', fileName as String) 
  • 和文件名,请用 - ${#TestCase#DATA_SINK_FILE_PATH}
+0

感谢,在正确的方向肯定了一步。虽然有些奇怪的事情发生..请参阅更新 –

+0

很高兴给予帮助。这证明了房地产扩张的作品。 'DataGen'我们无法修复,因为它不是我们的手。我相信这个答案有助于在实现所需功能的同时进一步推进。所以,如果你能接受它作为答案,那很感激。 – Rao