Re: Testing products outside of zope (i.e., in python interpreter)?
Hi, Joe!
"JG" == Joe Grace writes:
JG> Hi, is there a way to test zope products outside of zope? I find that JG> I'm restarting zope just to update my product and test it, and that JG> seems painfully slow. I'd like to just run code outside of zope JG> interactively in a shell. Is that possible? I'm trying with Boring JG> product (super simple) and tripping over the Persistence import JG> Import Error: cannot import name Persistent JG> I've run into this problem before and assume that Persistent is a C JG> function. How do I make it available to my python interpreter? Add the directory, where it's located to sys.path (in Python) or PYTHONPATH environment variable. JG> I couldn't figure out where z2.py gets it, but I also am just dealing JG> with the python environment for the first time. I'm using Xemacs (on JG> NT) if that makes giving some tips any easier. :-) JG> I'll take pointers, tips, how-to reference, anything at this point. JG> I'd be happy to make a How-To if I get enough information. Right now I'm using two-stage aproach. First I build the Data.fs of my site using following script: #!/usr/bin/env python # -*- python -*- file # $Id: build.py,v 1.1.2.1 2000/01/06 15:37:02 akhavr Exp $ # # Copyright (C) 2000 by Andrey V Khavryutchenko <akhavr@compchem.kiev.ua> import os, sys, getopt verbose=0 opts, args = getopt.getopt(sys.argv[1:],'v') for o, v in opts: if o=='-v': verbose=1 ZopeLibPath=os.environ['ZOPE_HOME'] sys.path=['', os.path.join(ZopeLibPath,'lib','python'), ZopeLibPath ]+filter(None,sys.path) import Zope root = Zope.app() import src os.chdir('src') src.build(root, verbose=verbose) get_transaction().commit() Then, I run test scripts like the following and compare their output to what it should look like. #!/usr/bin/env python # -*- python -*- file # $Id: register-user_correct.py,v 1.1.2.4 2000/01/06 22:15:26 akhavr Exp $ # # Copyright (C) 2000 by Andrey V Khavryutchenko <akhavr@compchem.kiev.ua> request = { 'first' : 'Andrey', 'last' : 'Khavryutchenko', 'email' : 'akhavr@compchem.kiev.ua', 'login' : 'akhavr', 'passwd' : 'abracada$%^ra', 'passwd2' : 'abracada$%^ra' } import init site = init.site from mkrequest import * print '*** Main page' site('/') site('/style_css') print '*** Select' site('/register') print '*** Register' site('/register/do' + mkrequest(request)) ==================== init.py #!/usr/bin/env python # -*- python -*- file # $Id: init.py,v 1.1.2.5 2000/01/06 15:37:00 akhavr Exp $ # # Copyright (C) 2000 by Andrey V Khavryutchenko <akhavr@compchem.kiev.ua> import os, sys, string ZopeLibPath=os.environ['ZOPE_HOME'] sys.path=['', os.path.join(ZopeLibPath,'lib','python'), ZopeLibPath ]+filter(None,sys.path) import ZPublisher, Zope root = Zope.app() def site(url, d=None): return ZPublisher.Zope(url, d=d) Hope this helps -- SY, Andrey V Khavryutchenko http://www.kbi.kiev.ua/~akhavr Software & SPI Engineer Visit my site Shick's Law: There is no problem a good miracle can't solve.
participants (1)
-
Andrey V Khavryutchenko