2016-08-22 184 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