Hi John... This might have to do with the fact that PythonScripts are looking for REQUEST. When you do "import Zope; app=Zope.app()", a REQUEST cannot be acquired through objects in the system. In normal operation, they can be. Here's a way around it: import ZODB # this is "magical", unfortunately import os from os import environ from sys import stdin from ZPublisher.HTTPRequest import HTTPRequest from ZPublisher.HTTPResponse import HTTPResponse from ZPublisher.BaseRequest import RequestContainer def makerequest(app): resp = HTTPResponse() environ['SERVER_NAME']='foo' environ['SERVER_PORT']='80' environ['REQUEST_METHOD'] = 'GET' req = HTTPRequest(stdin, environ, resp) return app.__of__(RequestContainer(REQUEST = req)) class ATest(TestCase): def setUp(self): import Zope self.app = makerequest(Zope.app()) self.app will be bound to a Zope instance with a fake request in all your test cases now. ----- Original Message ----- From: "John R. Daily" <jdaily@progeny.com> To: <zope@zope.org> Sent: Monday, February 26, 2001 1:13 PM Subject: [Zope] Offline testing
I'm attempting to run offline unit tests (via PyUnit, importing the Zope module with Zope turned off) against some functionality I've written via Python Scripts. The error messages are not helping much, and the online tests work fine, so I'm at a loss to troubleshoot this.
Any suggestions on how to interpret the following, or pointers to Zope troubleshooting resources that would help, would be greatly appreciated.
Essentially, I have a /lib/issue/add_issue Python script which takes a string argument and creates a new folder by that name in a certain path. The add_issue script acts under a proxy to run as a Manager.
Run: 4 ; Failures: 0; Errors: 1 There was 1 error: 1) issues.issuesTest.runTest Traceback (innermost last): File "issues.py", line 45, in runTest id.append(libissue.add_issue(self.type)) File "/usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py", line 324, in __call__ return self._bindAndExec(args, kw, None) File "/usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py", line 353, in _bindAndExec return self._exec(bound_data, args, kw) File "/usr/lib/zope/lib/python/Products/PythonScripts/PythonScript.py", line 330, in _exec result = apply(f, args, kw) File "Script (Python)", line 32, in add_issue File "/usr/lib/zope/lib/python/OFS/PropertyManager.py", line 355, in manage_changeProperties return self.manage_propertiesForm(self,REQUEST,manage_tabs_message=message) File "/usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py", line 324, in __call__ return self._bindAndExec(args, kw, None) File "/usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py", line 353, in _bindAndExec return self._exec(bound_data, args, kw) File "/usr/lib/zope/lib/python/App/special_dtml.py", line 236, in _exec try: result = render_blocks(self._v_blocks, ns) File "/usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py", line 337, in __render_with_namespace__ return self._bindAndExec((), namevals, namespace) File "/usr/lib/zope/lib/python/Shared/DC/Scripts/Bindings.py", line 353, in _bindAndExec return self._exec(bound_data, args, kw) File "/usr/lib/zope/lib/python/App/special_dtml.py", line 236, in _exec try: result = render_blocks(self._v_blocks, ns) File "/usr/lib/zope/lib/python/DocumentTemplate/DT_Let.py", line 146, in render else: d[name]=expr(md) File "/usr/lib/zope/lib/python/DocumentTemplate/DT_Util.py", line 334, in eval return eval(code,globals,d) File "<string>", line 0, in ? File "/usr/lib/zope/lib/python/DocumentTemplate/DT_Util.py", line 127, in careful_getattr try: v=getattr(inst, name) AttributeError: 'None' object has no attribute 'get'
-- -- John R. Daily jdaily@progeny.com Systems Programmer Progeny Linux Systems Master of the ephemeral epiphany
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )