Repeatable Unit Tests require that the job under test produce deterministic data based on a set of predefined inputs and parameters. Calculations based on the current date are common in DataStage jobs but will cause the output produced by jobs to change depending on the date the job executed. This page outlines practices that can ensure jobs using current date calculations can be tested.
Transformer Stages using CurrentDate(), CurrentTime() or CurrentTimestamp() functions
Unless your date calculation requires an exact date/time a record was being processed, the standard CurrentDate()
, CurrentTime()
and CurrentTimestamp()
functions can be substituted with the DSJobStartDate
, DSJobStartTime
and DSJobStartTimestamp
macros which can be set to a specific value during testing using . Add DSJobStartDate
, DSJobStartTime
and/or DSJobStartTimestamp
to the parameters clause of the Unit Test Specification and set the appropriate date and time values used during Unit Testing.
Code Block | ||
---|---|---|
| ||
... when: parameters: DSJobStartDate: 2012-01-15 DSJobStartTime: 11:05:01 |
Note |
---|
Be careful when setting |
Ignoring columns which are known to be nondeterministic
Rather than ensuring that a job under test produces deterministic data, you may decide to exclude one or more output columns from Unit Test comparisons. This can be done by adding the columns to be ignored to the then clause of the Unit Test Specification.
Code Block | ||
---|---|---|
| ||
given:
...
when:
...
then:
- stage: Transform
link: Output
path: Transform-Output.csv
ignore:
- CREATION_DATE
- LAST_UPDATED |