[Checkins] SVN: Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftest
Add functional testing framework.
Uli Fouquet
uli at gnufix.de
Sun Oct 7 08:04:16 EDT 2007
Log message for revision 80694:
Add functional testing framework.
Changed:
U Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftesting.zcml
A Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/
A Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/__init__.py
A Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/application/
A Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/application/__init__.py
A Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/application/addremoveadmin.py
A Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/test_grokadmin_functional.py
-=-
Modified: Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftesting.zcml
===================================================================
--- Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftesting.zcml 2007-10-07 11:27:48 UTC (rev 80693)
+++ Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftesting.zcml 2007-10-07 12:04:16 UTC (rev 80694)
@@ -4,7 +4,7 @@
package="grokadmin"
>
- <include package="grok" />
+ <include package="grokadmin" />
<!-- Typical functional testing security setup -->
<securityPolicy
Added: Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/__init__.py
===================================================================
--- Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/__init__.py (rev 0)
+++ Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/__init__.py 2007-10-07 12:04:16 UTC (rev 80694)
@@ -0,0 +1 @@
+# this is a package
Added: Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/application/__init__.py
===================================================================
Added: Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/application/addremoveadmin.py
===================================================================
--- Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/application/addremoveadmin.py (rev 0)
+++ Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/application/addremoveadmin.py 2007-10-07 12:04:16 UTC (rev 80694)
@@ -0,0 +1,36 @@
+"""
+
+=======================================
+Basic operations on GrokAdmin instances
+=======================================
+
+For the time being, we have the opportunity to add instances of
+``GrokAdmin`` using the 'built-in' admin-UI that comes with Grok.
+
+We setup an environment, so that we can simulate through-the-web (TTW)
+operations::
+
+ >>> from zope.testbrowser.testing import Browser
+ >>> browser = Browser()
+ >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+ >>> browser.open("http://localhost/")
+
+The opening screen of the built-in admin-UI provides a possibility to
+add a ``GrokAdmin`` instance::
+
+ >>> subform = browser.getForm(name='GrokAdmin')
+
+We create a ``GrokAdmin`` instance called `admin`::
+
+ >>> subform.getControl('Name your new app:').value = 'admin'
+ >>> subform.getControl('Create').click()
+
+ >>> print browser.contents
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ ...
+ ...<legend>Installed applications</legend>
+ ...
+ ...<a href="http://localhost/admin">
+ ...
+
+"""
Added: Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/test_grokadmin_functional.py
===================================================================
--- Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/test_grokadmin_functional.py (rev 0)
+++ Sandbox/ulif/grokadmin/trunk/src/grokadmin/ftests/test_grokadmin_functional.py 2007-10-07 12:04:16 UTC (rev 80694)
@@ -0,0 +1,60 @@
+import re
+import unittest
+#import grok
+import os.path
+import grokadmin
+
+from pkg_resources import resource_listdir
+from zope.testing import doctest, renormalizing
+from zope.app.testing.functional import (HTTPCaller, getRootFolder,
+ FunctionalTestSetup, sync, ZCMLLayer)
+
+ftesting_zcml = os.path.join(os.path.dirname(grokadmin.__file__),
+ 'ftesting.zcml')
+GrokAdminFunctionalLayer = ZCMLLayer(ftesting_zcml, __name__,
+ 'GrokAdminFunctionalLayer')
+
+def setUp(test):
+ FunctionalTestSetup().setUp()
+
+def tearDown(test):
+ FunctionalTestSetup().tearDown()
+
+checker = renormalizing.RENormalizing([
+ # Accommodate to exception wrapping in newer versions of mechanize
+ (re.compile(r'httperror_seek_wrapper:', re.M), 'HTTPError:'),
+ ])
+
+def suiteFromPackage(name):
+ files = resource_listdir(__name__, name)
+ suite = unittest.TestSuite()
+ for filename in files:
+ if not filename.endswith('.py'):
+ continue
+ if filename == '__init__.py':
+ continue
+
+ dottedname = 'grokadmin.ftests.%s.%s' % (name, filename[:-3])
+ test = doctest.DocTestSuite(
+ dottedname, setUp=setUp, tearDown=tearDown,
+ checker=checker,
+ extraglobs=dict(http=HTTPCaller(),
+ getRootFolder=getRootFolder,
+ sync=sync),
+ optionflags=(doctest.ELLIPSIS+
+ doctest.NORMALIZE_WHITESPACE+
+ doctest.REPORT_NDIFF)
+ )
+ test.layer = GrokAdminFunctionalLayer
+
+ suite.addTest(test)
+ return suite
+
+def test_suite():
+ suite = unittest.TestSuite()
+ for name in ['application',]:
+ suite.addTest(suiteFromPackage(name))
+ return suite
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
More information about the Checkins
mailing list