Comment 3 for bug 677401

Revision history for this message
Giampaolo RodolĂ  (g-rodola) wrote :

In case it can be useful, the one below is the test structure that I use in my app (app name is "bgb").
I do not use/like doctests, hence only a unit and functional test classes are provided.
Do you think it would be acceptable for grokproject to generate something similar?

=== tests/config.py ===

import os

import z3c.testsetup
from zope.app.testing.functional import ZCMLLayer

import bgb

ftesting_zcml = os.path.join(os.path.dirname(bgb.__file__), 'ftesting.zcml')
FunctionalLayer = ZCMLLayer(ftesting_zcml, __name__, 'FunctionalLayer', allow_teardown=True)

test_suite = z3c.testsetup.register_all_tests('bgb')

=== tests/test_app.py ===

"""
Needed in order to make this executable.

:Test-Layer: python
"""

import unittest

from zope.publisher.interfaces import NotFound

# --- unittest

class TestUnit(unittest.TestCase):
    # put unit tests for your app here

    def test_some_test(self):
        self.assertEqual(1 + 1, 2)

# --- functional

from zope.app.testing.functional import FunctionalTestCase
from zope.testbrowser.testing import Browser

from bgb.tests.config import FunctionalLayer
from bgb.app import Bgb

class TestFunctional(FunctionalTestCase):
    # put functional tests for your app here

    layer = FunctionalLayer

    def setUp(self):
        # creates an app/site which can be navigated
        # http://grok.zope.org/doc/current/reference/testing.html#functional-test-layer
        FunctionalTestCase.setUp(self)
        self.browser = Browser()
        self.browser.handleErrors = False
        root = self.getRootFolder()
        root['bgb'] = Bgb()

    def test_home(self):
        self.browser.open('http://localhost/bgb')
        #self.assertEqual(self.browser.title, 'Welcome')

    # test other views here
    #def test_search(self):
    # self.browser.open('http://localhost/bgb/search')