Running qiBuild test suite

All in one step

Create a virtualenv to run your tests:

             virtualenv venv
source venv/bin/activate


Install qibuild with the “–editable” option, so that your changes are reflected without the need to call pip install again

             cd /path/to/qibuild
pip install --editable .


Install all the test dependencies:

             cd /path/to/qibuild
pip install -r requirements.txt


Finally, run make :

             cd /path/to/qibuild/python


This will use pylint to check for obvious errors, then run the full test suite.

Sometimes pylint is mistaken, you can fix this by adding a small comment to disable the check, using the pylint error code:

             # pylint:disable-msg=E1101


Running the test suite

This is on a build farm but only for linux and python2.7, so it is possible that some tests will fail.

If you do find a failing test, please open a bug.

If you find a bug, a nice way to make it easier to fix it is to write a failing test and mark it as ‘skipped’

             @pytest.skip("See bug # ....")
def test_subtle_bug(self):
   res = do_something_complicated()
   # Should be 42 but for some reason is 41 ...
   assert res == 42


This way when the bug is fixed we just have to remove the @pytest.skip and we are sure the bug never occurs again.

Running only some tests

You can use py.test like this:

  • Just for a given python package:

              cd python
py.test qisrc

  • Just for a given test file:

              py.test qisrc/test/

  • Just for a given test name:

              py.test qisrc/test/ -k set_tracking_branch


Note about debuggers

If you are using ipdb or pdb to insert break points in the code like this:

              # in
def test_my_complicated_function():
    from IPython.core.debugger import Tracer; debug_here=Tracer()


You will get an error message when you run py.test

The solution is to use the -s option of py.test :

              $ py.test -s


Exiting the virtualenv when you are done

Simply type

             $ deactivate


Feel free to remove the virtualenv folder

             $ rm -fr venv