.. _tests: Tests ===== There are python unit tests in this directory. They test the servers functionality by sending requests to the server and checking the response. The server software has to run on the device for the unit tests to work. The tests will fail if the server is not running. Important note -------------- Write a test case in the following cases: - You added a new feature. - You fixed a bug. Create a test case which tests the behavior which caused the bug. Run the test cases always before pushing new code to the repository. Update the test cases as needed! How to run the tests -------------------- Before running the unit tests the test suite needs to be setup correctly. This is done by copying the ``settings_local.py.example`` file to ``settings_local.py`` and editing the file to match your setup. .. code-block:: bash cp settings_local.py.example settings_local.py There set the correct port and IP address of the device. **Make sure the device is running the server and nothing is connected to the ADC (this is subject to change)!** Then you can run the tests from within the ``test`` directory with the following command: .. code-block:: bash python3 -m unittest discover The actual tests are within the files starting with ``test_``. If you want to run a specific test file you can do so with the following command: .. code-block:: bash python3 -m unittest If you want to run a specific test case within a test file you can do so with the following command: .. code-block:: bash python3 -m unittest .TestSequence. ** is the name of the test case method within the test file. *TestSequence* is the name of the test class within the test file. It should be always *TestSequence*. Adding a new test case ---------------------- If your test case fits within an existing test file, add it there. Otherwise create a new test file. If you create a new test file, make sure it start with ``test_`` and ``xx`` where ``xx`` is the next number after the last test file. The numbers after ``test_`` as well as the numbers within the test case names are used to run the test cases in a specific order. The python unit test system runs all tests in alphabetical order. This is why the numbers are needed.