[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