cancel
Showing results for 
Search instead for 
Did you mean: 

Groovy Script to identify a file timestamp

Highlighted
Frequent Contributor

Groovy Script to identify a file timestamp

Just sharing this groovy script I am using to disable a "DataCollection" step based on a filetime stamp.

 

Use case: 

    • Identify when datasource file is modified
    • If datasource file is already generated then skip/disable datacollection step which in the end writes data to datasource file
    • why to disable - if you want to run the same API tests (but different versions say due to refactoring) against same dataset
    • Below is the sample test case structure
    • TestSteps.PNG

DataSource check script is shown below

import com.eviware.soapui.support.GroovyUtils
import java.text.DateFormat
import java.text.SimpleDateFormat

//## Get test step name //
def currentStepInd = context.currentStepIndex
def TestStepName = testRunner.testCase.getTestStepAt(currentStepInd).name

log.info "------------------------------------------------"
log.info "Running  $TestStepName..."

//## Get current Date  ##//
def CurrentDate = new Date()
    log.info "Current Date is $CurrentDate..."


// Get datasource file //

def DataSourceFile =  context.expand('${projectDir}') + "\\DataSource.txt"
File DataFile = new File(DataSourceFile) 
log.info "DataSource File is: $DataFile"
  
def fileDate    

if (DataFile.exists()) {
            // Get the last modification information.
            Long lastModified = DataFile.lastModified()

            // Create a new date object and pass last modified
            fileDate = new Date(lastModified)
                 //fileDate = sdf.format(fileDate)
                 log.info "File modified time is: $fileDate"
}

//## To find Date Diff ##//
def diff 
use(groovy.time.TimeCategory) {
                               diff = (CurrentDate - fileDate).days
                               
                               
}

//## Skip DataCollection if DataSource is older than today ##//
if(diff == 0) {
	         //## disable teststep to skip data collection ##//
	         log.info  "Disabling testStep DataCollection..."
    	         testRunner.testCase.getTestStepByName( "DataCollection" ).setDisabled(true)
}else{
	 //## enable teststep to run data collection ##//
	 log.info  "Enabling testStep DataCollection..."
	 testRunner.testCase.getTestStepByName( "DataCollection" ).setDisabled(false)
      
}

log.info "Finished $TestStepName..."
log.info "------------------------------------------------"

thanks!

 

1 REPLY 1
Highlighted
Moderator

Re: Groovy Script to identify a file timestamp

Thank you for sharing the script with us!



 Join SmartBear Connect next April in Boston to meet with software development, API and testing experts from around the world! Get your ticket today!