Using Test Data
#
OverviewFlood Element includes a simple facility for loading Test Data from CSV and JSON files, or as a list of data specified directly in the script.
#
Loading data from inside the scriptThe simplest way to provide data to your test is right from the script itself:
You may then use the data in your steps:
#
Loading data from external filesFor larger or more complicated data sets, you may load data from CSV or JSON files.
#
Loading data from a CSV fileIf you have data available in a CSV file, perhaps exported from Excel, you can use it to power your test:
#
CSV column namesNote that the first line of each column is taken to be the name of that column.
This means that if your column names contain spaces, you won't be able to use the javascript .
property access notation.
Instead use []
notation.
The CSV
would be accessed as:
#
Loading data from a JSON fileLoading data from a JSON is just as simple as loading from CSV
#
Data file locationsWhen running Element in cli mode (element run
), place the data files in the same directory as your test script.
When its running as a load test on flood.io, upload the data files alongside your script.
#
Advanced topic: ensuring your data is well-definedWhen it's important that your test data is well-defined, Flood Element provides two main approaches: type checking and manual assertion
#
type checkingElement test scripts are written in TypeScript and are thus type checked before being run. Type checking helps write more reliable code (as well as providing documentation and code completion in your editor).
Its possible to define test data using the any
type (as in the examples above). However you could also add explicit type annotations:
#
manual assertionA hidden problem with the type checking approach is that it's not possible to automatically type check data loaded in from a CSV or JSON at runtime (The techinal reason is that TypeScript's type annotations are not available at runtime - they're said to be "erased" once compiled)
When loading in data from a file, we can still validate it by using assert
. (Note that in this example we're still using type annotations to make the coding experience better)
#
truthiness and falsiness'Truthiness' and 'falsiness' refer to the fact that in Javascript (and thus TypeScript), more values than true
and false
are considered to be true
or false
in an if
statement.
Falsy values are false
, ""
(an empty string), 0
, NaN
, null
and undefined
; all other values are truthy.
Its important to understand this when validating data, since for example a value of 0
might be valid, but would be considered to be false
when tested with assert.ok(0)
.
#
More informationFind more information in the API reference for TestData, TestDataFactory and TestDataSource, or check out the Flood challenge with test data example script.