Tests#
For automatic tests in DeepHyper we chose to use the Pytest package.
Developer Installation#
Follow the local-dev-installation.
Running Tests#
Tests corresponding to deephyper
modules are located in the tests
folder. These tests are marked with possible marks such as:
fast: tests that are fast to run.
slow: tests that are slow to run.
hps: tests that are related to hyperparameter search.
nas: tests that are related to neural architecture search.
mpi: tests that require MPI.
ray: tests that require Ray.
redis: tests that require Redis.
To run corresponding tests these markers can be used such as:
pytest --run fast,hps tests/
Testing Notebooks#
To test notebooks the develop
branch of deephyper can be installed with pip by using the following command:
!pip install -e "git+https://github.com/deephyper/deephyper.git@develop#egg=deephyper"
Writting Tests#
Tests are located in the tests
folder. Each module from deephyper
should have a corresponding test module with the same name but with the test_
prefix.
For example, the deephyper/stopper/_median_stopper.py
module should have a corresponding tests/deephyper/stopper/ test__median_stopper.py
module.
The test module should start by importing pytest
.
import pytest
Then, each test function should have a name starting with test_
. For example, the test__median_stopper.py
module should have a test_median_stopper
function.
def test_median_stopper():
...
This function should use decorators to classify its type. For example, the test_median_stopper
function should be decorated with the @pytest.mark.fast
decorator and @pytest.mark.hps
decorator.
@pytest.mark.fast
@pytest.mark.hps
def test_median_stopper():
...
Each test function creating data (files or directly) should use a temporary directory and make sure the corresponding files are deleted at the end of the test. The tmp_path
fixture is used for this purpose.
@pytest.mark.fast
@pytest.mark.hps
def test_median_stopper(tmp_path):
...
Note
If you want to know more about temporary directory or file check the Pytest documentation: How to use temporary directories and files in tests.