Testing
Unit testing
The refactored model is being thoroughly tested thanks to unit testing, integration testing and (intelligent) type checking.
To test, from either the root folder or within tests/
run:
pytest
To enable coverage reporting, run:
pytest --cov=slim/ --cov-config=.coveragerc --cov-report html --cov-context=test
The last two parameters generate a human-friendly report.
Type checking
For type checking, install pytype and run (from the root folder):
pytype --config pytype.cfg
Profiling
This project relies on cProfile for profiling. To profile an execution pass the –profile option.
To visualise the final profiling artifact (released as {output_folder}/profile_{sim_name}
) one could use snakeviz or any other tooling of choice.
Note that cProfile does not provide line coverage. For that purpose line-profiler is available. Unfortunately it requires manual annotation of the source code.
Tip
It is recommended to minimise any I/O operation while profiling. Thus avoid
using options like --save-rate
.
Assertion failures
Sometimes the simulation crashes due to some invariants being broken. If you believe that
it shouldn’t be concerning you could pass the -O
option to the interpreter to ignore the assertion
failures. That said, assertion failures are good indicators of simulation bug.
Please report them via Github.