Fixtures¶
The purpose of the test fixtures is to ease the writing of test functions by providing information and data automatically. You may find more documentation on pytest fixture in its official documentation. We describe here the fixtures defined in pytest-executable. Some of them are used in the default test module, see Default test module.
Runner fixture¶
The runner
fixture is used to execute the runner shell script passed with
--exe-runner
. This fixture is an object
which can execute the script
with the run()
method. This method returns the exit status of the
script execution. The value of the exit status shall be 0 when the
execution is successful.
When --exe-runner
is not set, a function that uses this fixture will
be skipped.
Output path fixture¶
The output_path
fixture provides the absolute path to the output
directory of a test case as a Path object.
Regression path fixture¶
The regression_file_path
fixture provides the paths to the reference
data of a test case. A test function that use this fixture is called once per
reference item (file or directory) declared in the Reference section of a test-settings.yaml
(thanks to the parametrize feature). The
regression_file_path
object has the attributes:
relative
: a Path object that contains the path to a reference item relatively to the output directory of the test case.absolute
: a Path object that contains the absolute path to a reference item.
If --exe-regression-root
is not set then a test function that uses
the fixture is skipped.
You may use this fixture with the Output path fixture to get the path to an output file that shall be compared to a reference file.
For instance, if a test-settings.yaml
under inputs/case
contains:
references:
- output/file
- '**/*.txt'
and if --exe-regression-root
is set to a directory references
that contains:
references
└── case
├── 0.txt
└── output
├── a.txt
└── file
then a test function that uses the fixture will be called once per item of the following list:
[
"references/case/output/file",
"references/case/0.txt",
"references/case/output/a.txt",
]
and for each these items, the regression_file_path
is set as
described above with the relative and absolute paths.
Tolerances fixture¶
The tolerances
fixture provides the contents of the Tolerances section
of a test-settings.yaml
as a dictionary that maps names to Tolerances
objects.
For instance, if a test-settings.yaml
contains:
tolerances:
data-name1:
abs: 1.
data-name2:
rel: 0.
abs: 0.
then the fixture object is such that:
tolerances["data-name1"].abs = 1.
tolerances["data-name1"].rel = 0.
tolerances["data-name2"].abs = 0.
tolerances["data-name2"].rel = 0.