diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-11-14 01:19:48 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-11-14 01:19:48 +0000 |
| commit | 38b6635fd101e51717d2daf7cc35f09590536cda (patch) | |
| tree | 30df2549d801dfc0ae82da74fb90899deb8cd583 /docs/narr/MyProject | |
| parent | eb6afe916a2c7456d4398e2f0df04ebacccd7f30 (diff) | |
| download | pyramid-38b6635fd101e51717d2daf7cc35f09590536cda.tar.gz pyramid-38b6635fd101e51717d2daf7cc35f09590536cda.tar.bz2 pyramid-38b6635fd101e51717d2daf7cc35f09590536cda.zip | |
- Change paster template ``tests.py`` to include a true unit test.
Retain old test as an integration test. Update documentation.
Diffstat (limited to 'docs/narr/MyProject')
| -rw-r--r-- | docs/narr/MyProject/myproject/tests.py | 76 |
1 files changed, 52 insertions, 24 deletions
diff --git a/docs/narr/MyProject/myproject/tests.py b/docs/narr/MyProject/myproject/tests.py index d3d4628ff..4c2f6a9ec 100644 --- a/docs/narr/MyProject/myproject/tests.py +++ b/docs/narr/MyProject/myproject/tests.py @@ -1,33 +1,66 @@ import unittest +from zope.testing.cleanup import cleanUp +from repoze.bfg import testing + class ViewTests(unittest.TestCase): + + """ These tests are unit tests for the view. They test the + functionality of *only* the view. They register and use dummy + implementations of repoze.bfg functionality to allow you to avoid + testing 'too much'""" + def setUp(self): - # This sets up the application registry with the registrations - # your application declares in its configure.zcml (including - # dependent registrations for repoze.bfg itself). This is a - # heavy-hammer way of making sure that your tests have enough - # context to run properly. But tests will run faster if you - # use only the registrations you need programmatically, so you - # should explore ways to do that rather than rely on ZCML (see - # the repoze.bfg tests for inspiration). - self._cleanup() + """ cleanUp() is required to clear out the application registry + between tests (done in setUp for good measure too) + """ + cleanUp() + + def tearDown(self): + """ cleanUp() is required to clear out the application registry + between tests + """ + cleanUp() + + def test_my_view(self): + from myproject.views import my_view + context = testing.DummyModel() + request = testing.DummyRequest() + renderer = testing.registerDummyRenderer('templates/mytemplate.pt') + response = my_view(context, request) + self.assertEqual(renderer.project, 'myproject') + +class ViewIntegrationTests(unittest.TestCase): + """ These tests are integration tests for the view. These test + the functionality the view *and* its integration with the rest of + the repoze.bfg framework. They cause the entire environment to be + set up and torn down as if your application was running 'for + real'. This is a heavy-hammer way of making sure that your tests + have enough context to run properly, and it tests your view's + integration with the rest of BFG. You should not use this style + of test to perform 'true' unit testing as tests will run faster + and will be easier to write if you use the testing facilities + provided by bfg and only the registrations you need, as in the + above ViewTests. + """ + def setUp(self): + """ This sets up the application registry with the + registrations your application declares in its configure.zcml + (including dependent registrations for repoze.bfg itself). + """ + cleanUp() import myproject import zope.configuration.xmlconfig - zope.configuration.xmlconfig.file('configure.zcml', - package=myproject) + zope.configuration.xmlconfig.file('configure.zcml', package=myproject) def tearDown(self): - self._cleanup() - - def _cleanup(self): - # this clears the application registry - from zope.testing.cleanup import cleanUp + """ Clear out the application registry """ cleanUp() - + def test_my_view(self): from myproject.views import my_view - context = DummyContext() - request = DummyRequest() + context = testing.DummyModel() + request = testing.DummyRequest() result = my_view(context, request) self.assertEqual(result.status, '200 OK') body = result.app_iter[0] @@ -38,8 +71,3 @@ class ViewTests(unittest.TestCase): self.assertEqual(result.headerlist[1], ('Content-Length', str(len(body)))) -class DummyContext: - pass - -class DummyRequest: - pass |
