Generating Dynamic Dates in Your Tests
You might need to create past or future dates inside your tests, like when you are testing a check-in or check-out date. Instead of entering dates as static values, which may need to be updated periodically, you can create dynamic dates.
Creating a dynamic date in API Testing is a simple solution for this sort of situation.
What You'll Need
- A Sauce Labs account (Log in or sign up for a free trial license).
- An existing API Testing Project. For details on how to create one, see API Testing Quickstart.
Create a Future Date
-
Open the Composer and add a Set component.
-
Enter/select the following:
-
Variable (the variable name) - for example
futureDate
-
Mode (the variable type) - for example
String
-
Value - for example
${D.format(D.plusDays(D.nowMillis(),35), 'yyyy-MM-DD')}
Here's the meaning of the expression written in the Value field:
${D.format(D.plusDays(D.nowMillis(),35), 'yyyy-MM-DD')}
D.nowMillis()
- Returns the current Unix epoch in milliseconds.D.plusDays()
- Returns the provided milliseconds, plus the provided number of days (in the example, 35 days were added to today's date).D.format()
- Creates a timestamp with the given format, using the current timezone (in the example,yyyy-MM-DD
).
-
-
Now, you can invoke the variable in your test.
Create a Past Date
In the same way, you can also create a Past Date (starting from today's date). Follow the steps for Create a Future Date, but replace the string D.plusDays()
with D.minusDays()
:
${D.format(D.minusDays(D.nowMillis(),35), 'yyyy-MM-DD')}
D.minusDays()
- Returns the provided milliseconds, minus the provided number of days (in the example, 35 days were subtracted from today's date).
Create a Date with a Time Zone
If you need to create a date based on a specified time zone:
${D.format(D.plusDays(D.nowMillis(),35), 'yyyy-MM-DD','America/New_York')}
D.format()
- Creates a timestamp with the given format, based on the provided time zone ID (the example uses the same date as before, but usesNew York
as the time zone).
Convert a Timestamp in Unix Time in Milliseconds
To convert a timestamp from a payload response to milliseconds:
${D.parse(1649094357)}
D.parse()
- Parses the provided timestamp and converts it to milliseconds.
For more information about how to play with dates, see the D Extension and Expression Language Extensions to see the whole extension library.