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
make
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/test_git.py
- Just for a given test name:
py.test qisrc/test/test_git.py -k set_tracking_branch
Note about debuggers¶
If you are using ipdb
or pdb
to insert break points in the code like this:
# in foo.py
def test_my_complicated_function():
from IPython.core.debugger import Tracer; debug_here=Tracer()
debug_here()
You will get an error message when you run py.test
The solution is to use the -s
option of py.test
:
$ py.test foo.py -s
Exiting the virtualenv when you are done¶
Simply type
$ deactivate
Feel free to remove the virtualenv folder
$ rm -fr venv