.. This file is part of kwalitee
Copyright (C) 2014, 2015 CERN.
kwalitee is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
kwalitee is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with kwalitee; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
In applying this licence, CERN does not waive the privileges and immunities
granted to it by virtue of its status as an Intergovernmental Organization
or submit itself to any jurisdiction.
.. _testing:
==========
Testing
==========
Running the tests are as simple as:
.. code-block:: console
$ python setup.py test
The code coverage can be output by passing some arguments to `py.test
`_.
.. code-block:: console
$ python setup.py test -a "tests --cov kwalitee --cov-config .coveragerc"
# html report
$ python setup.py test -a "tests --cov kwalitee --cov-report html"
Ditto for running only one test or debugging with pdb.
.. code-block:: console
$ python setup.py test -a tests/tests_ping.py
$ python setup.py test -a tests/tests_ping.py::test_ping
$ python setup.py test -a "tests --pdb"
Writing tests
=============
The tests are using PyHamcrest_ for its richness and the nice default output
provided. To be consistent, avoid using :py:mod:`unittest` or bare ``assert``.
Fixtures
========
Fixtures are provided by the very powerful py.test. Take a look at the fixtures
defined in the :ref:`conftest.py ` files.
Other tools
===========
`HTTPretty `_
------------------------------------------
``HTTPretty`` is a HTTP client mock library which lets you define your own
custom answers and status code as well as testing which calls have been made.
:py:mod:`mock`
--------------
``mock`` is used to mock file opening (:py:func:`open`) and inspect the content
that was written in it without having to create temporary files with
:py:mod:`tempfile`.
.. _PyHamcrest: https://pyhamcrest.readthedocs.io/