Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update testing.rst #2481

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 19 additions & 28 deletions docs/narr/testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ without needing to invoke the actual application configuration implied by its

In the above example, we create a ``MyTest`` test case that inherits from
:class:`unittest.TestCase`. If it's in our :app:`Pyramid` application, it will
be found when ``setup.py test`` is run. It has two test methods.
be found when ``py.test`` is run. It has two test methods.

The first test method, ``test_view_fn_forbidden`` tests the ``view_fn`` when
the authentication policy forbids the current user the ``edit`` permission. Its
Expand Down Expand Up @@ -365,46 +365,37 @@ Functional tests test your literal application.

In Pyramid, functional tests are typically written using the :term:`WebTest`
package, which provides APIs for invoking HTTP(S) requests to your application.
We also like ``py.test`` and ``pytest-cov`` to provide simple testing and
coverage reports.

Regardless of which testing :term:`package` you use, ensure to add a
``tests_require`` dependency on that package to your application's
``setup.py`` file. Using the project ``MyProject`` generated by the starter
scaffold as described in :doc:`project`, we would insert the following code immediately following the
``requires`` block in the file ``MyProject/setup.py``.
Regardless of which testing :term:`package` you use, be sure to add a
``tests_require`` dependency on that package to your application's ``setup.py``
file. Using the project ``MyProject`` generated by the starter scaffold as
described in :doc:`project`, we would insert the following code immediately
following the ``requires`` block in the file ``MyProject/setup.py``.

.. code-block:: ini
.. literalinclude:: MyProject/setup.py
:language: python
:linenos:
:lines: 11-22
:lineno-start: 11
:emphasize-lines: 8-

requires = [
'pyramid',
'pyramid_chameleon',
'pyramid_debugtoolbar',
'waitress',
]

test_requires = [
'webtest',
]

Remember to change the dependency.

.. code-block:: ini
.. literalinclude:: MyProject/setup.py
:language: python
:linenos:
:lineno-start: 39
:emphasize-lines: 2

install_requires=requires,
tests_require=test_requires,
test_suite="myproject",
:lines: 40-44
:lineno-start: 40
:emphasize-lines: 2-4

As always, whenever you change your dependencies, make sure to run the
following command.
As always, whenever you change your dependencies, make sure to run the correct
``pip install -e`` command.

.. code-block:: bash

$VENV/bin/python setup.py develop
$VENV/bin/pip install -e ".[testing]"

In your ``MyPackage`` project, your :term:`package` is named ``myproject``
which contains a ``views`` module, which in turn contains a :term:`view`
Expand Down