summaryrefslogtreecommitdiff
path: root/docs/tutorials/wiki2/tests.rst
diff options
context:
space:
mode:
authorChristoph Zwerschke <cito@online.de>2011-06-05 17:29:52 +0200
committerChristoph Zwerschke <cito@online.de>2011-06-05 17:29:52 +0200
commit487f7e763935caf4ff9f2b6518512b9e915fe2c2 (patch)
tree829f38988bc8d35a5406e3d2281cac22a7713e94 /docs/tutorials/wiki2/tests.rst
parent879bb56558527e402bc8b0135ce2b40d24fe4a12 (diff)
downloadpyramid-487f7e763935caf4ff9f2b6518512b9e915fe2c2.tar.gz
pyramid-487f7e763935caf4ff9f2b6518512b9e915fe2c2.tar.bz2
pyramid-487f7e763935caf4ff9f2b6518512b9e915fe2c2.zip
Make tests in the Wiki2 tutorial a separate chapter, as for Wiki1.
Also add functional tests to the Wiki2 tutorial, similar to Wiki1.
Diffstat (limited to 'docs/tutorials/wiki2/tests.rst')
-rw-r--r--docs/tutorials/wiki2/tests.rst74
1 files changed, 74 insertions, 0 deletions
diff --git a/docs/tutorials/wiki2/tests.rst b/docs/tutorials/wiki2/tests.rst
new file mode 100644
index 000000000..7a4e65529
--- /dev/null
+++ b/docs/tutorials/wiki2/tests.rst
@@ -0,0 +1,74 @@
+============
+Adding Tests
+============
+
+We will now add tests for the models and the views and a few functional
+tests in the ``tests.py``. Tests ensure that an application works, and
+that it continues to work after some changes are made in the future.
+
+Testing the Models
+==================
+
+We write a test class for the model class ``Page`` and another test class
+for the ``initialize_sql`` function.
+
+To do so, we'll retain the ``tutorial.tests.ViewTests`` class provided as a
+result of the ``pyramid_routesalchemy`` project generator. We'll add two
+test classes: one for the ``Page`` model named ``PageModelTests``, one for the
+``initialize_sql`` function named ``InitializeSqlTests``.
+
+Testing the Views
+=================
+
+We'll modify our ``tests.py`` file, adding tests for each view function we
+added above. As a result, we'll *delete* the ``ViewTests`` test in the file,
+and add four other test classes: ``ViewWikiTests``, ``ViewPageTests``,
+``AddPageTests``, and ``EditPageTests``. These test the ``view_wiki``,
+``view_page``, ``add_page``, and ``edit_page`` views respectively.
+
+Functional tests
+================
+
+We test the whole application, covering security aspects that are not
+tested in the unit tests, like logging in, logging out, checking that
+the ``viewer`` user cannot add or edit pages, but the ``editor`` user
+can, and so on.
+
+Viewing the results of all our edits to ``tests.py``
+====================================================
+
+Once we're done with the ``tests.py`` module, it will look a lot like the
+below:
+
+.. literalinclude:: src/tests/tutorial/tests.py
+ :linenos:
+ :language: python
+
+Running the Tests
+=================
+
+We can run these tests by using ``setup.py test`` in the same way we did in
+:ref:`running_tests`. Assuming our shell's current working directory is the
+"tutorial" distribution directory:
+
+On UNIX:
+
+.. code-block:: text
+
+ $ ../bin/python setup.py test -q
+
+On Windows:
+
+.. code-block:: text
+
+ c:\pyramidtut\tutorial> ..\Scripts\python setup.py test -q
+
+The expected result looks something like:
+
+.. code-block:: text
+
+ ......................
+ ----------------------------------------------------------------------
+ Ran 22 tests in 2.700s
+
+ OK