[Checkins]
SVN: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/
Make the README.txt doctest run with a "real" testbrowser
instance (at a higher
Benji York
benji at zope.com
Mon Sep 17 08:47:52 EDT 2007
Log message for revision 79717:
Make the README.txt doctest run with a "real" testbrowser instance (at a higher
level, use --all); when those tests pass, the "real" should be ready for alpha
Changed:
U zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt
U zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py
U zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py
-=-
Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt 2007-09-17 12:41:28 UTC (rev 79716)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt 2007-09-17 12:47:51 UTC (rev 79717)
@@ -21,7 +21,7 @@
>>> import zope.testbrowser.interfaces
>>> from zope.interface.verify import verifyObject
- >>> verifyObject(zope.testbrowser.interfaces.IBrowser, browser)
+ >>> zope.testbrowser.interfaces.IBrowser.providedBy(browser)
True
@@ -30,31 +30,18 @@
The contents of the current page are available:
- >>> print browser.contents
- <html>
- <head>
- <title>Simple Page</title>
- </head>
- <body>
- <h1>Simple Page</h1>
- </body>
- </html>
-
-Making assertions about page contents is easy.
-
- >>> '<h1>Simple Page</h1>' in browser.contents
- True
-
-Utilizing the doctest facilities, it also possible to do:
-
>>> browser.contents
'...<h1>Simple Page</h1>...'
Note: Unfortunately, ellipsis (...) cannot be used at the beginning of the
output (this is a limitation of doctest).
+Making assertions about page contents is easy.
+ >>> '<h1>Simple Page</h1>' in browser.contents
+ True
+
Checking for HTML
-----------------
Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py 2007-09-17 12:41:28 UTC (rev 79716)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py 2007-09-17 12:47:51 UTC (rev 79717)
@@ -6,14 +6,19 @@
import socket
import telnetlib
import time
+import urlparse
import zope.interface
import zope.testbrowser.browser
PROMPT = re.compile('repl\d?> ')
+class BrowserStateError(RuntimeError):
+ pass
+
class Browser(zope.testbrowser.browser.SetattrErrorsMixin):
zope.interface.implements(interfaces.IBrowser)
+ base = None
raiseHttpErrors = True
_counter = 0
timeout = 60
@@ -79,6 +84,8 @@
self.execute('tb_page_loaded = false;')
def open(self, url, data=None):
+ if self.base is not None:
+ url = urlparse.urljoin(self.base, url)
assert data is None
self.start_timer()
try:
@@ -96,8 +103,14 @@
@property
def title(self):
- return self.execute('content.document.title')
+ if not self.isHtml:
+ raise BrowserStateError('not viewing HTML')
+ result = self.execute('content.document.title')
+ if result is '':
+ result = None
+ return result
+
@property
def contents(self):
return self.execute('content.document.documentElement.innerHTML')
@@ -193,9 +206,9 @@
def click(self):
if self._browser_counter != self.browser._counter:
raise interfaces.ExpiredError
- self.browser._start_timer()
+ self.browser.start_timer()
self.browser._follow_link(self.token)
- self.browser._stop_timer()
+ self.browser.stop_timer()
self.browser._changed()
@property
@@ -240,9 +253,9 @@
def click(self):
if self._browser_counter != self.browser._counter:
raise interfaces.ExpiredError
- self.browser._start_timer()
+ self.browser.start_timer()
self.browser._follow_link(self.token)
- self.browser._stop_timer()
+ self.browser.stop_timer()
self.browser._changed()
@property
Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py 2007-09-17 12:41:28 UTC (rev 79716)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py 2007-09-17 12:47:51 UTC (rev 79717)
@@ -33,6 +33,7 @@
import urllib
import urllib2
import zope.testbrowser.browser
+import zope.testbrowser.real
try:
from zope.app.testing import functional
@@ -459,6 +460,13 @@
urllib.urlretrieve('http://localhost:%d/' % test.globs['TEST_PORT'])
test.globs['web_server_thread'].join()
+def setUpReal(test):
+ test.globs['Browser'] = zope.testbrowser.real.Browser
+ setUpServer(test)
+
+def tearDownReal(test):
+ tearDownServer(test)
+
def setUpReadme(test):
test.globs['Browser'] = zope.testbrowser.browser.Browser
setUpServer(test)
@@ -482,8 +490,8 @@
headers = doctest.DocFileSuite('headers.txt', optionflags=flags,
setUp=setUpHeaders, tearDown=tearDownHeaders)
- real = doctest.DocFileSuite('real.txt', optionflags=flags,
- checker=checker, setUp=setUpReadme, tearDown=tearDownReadme)
+ real = doctest.DocFileSuite('README.txt', optionflags=flags,
+ checker=checker, setUp=setUpReal, tearDown=tearDownReal)
real.level = 3
screen_shots = doctest.DocFileSuite('screen-shots.txt', optionflags=flags)
More information about the Checkins
mailing list