Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
HOW TO Debug and test Plomino applications
How to find why a formula is not working as expected.
Plomino debug mode
In Plomino, there is a debug mode (go to db, edit, then check Debug mode), it just enables a verbose mode, so you get more information in the Zope server log.
Plone debug practices
You can use all the Plone dev tools and good practices:
##Traces in the log You can add some traces like this:
Log("My value is:"+plominoDocument.the_value)
it will be displayed in the Zope log.
##Zope in debug mode You can launch your Zope instance in debug mode (non HTTP):
you get a python prompt where 'app' is the Zope application (so app.Plone.yourdb will be your db object).
Install zdb (see https://secure.simplistix.co.uk/svn/Simplistix/zdb/trunk/readme.txt), then insert this line in any Plomino formula:
from Products.zdb import set_trace; set_trace()
and when the formula is executed, you will be in debug mode in your server console.
Note: ZDB is an old product, but it does work, and is very useful.
You can create some Selenium tests to validate a behaviour and make sure it is not impacted by further changes.
You can create some python doctests (you can export your Plomino db as xml and have a doctest able to import it automatically in a blank site and run some tests, example: https://plomino.svn.sourceforge.net/svnroot/plomino/trunk/Plomino/Products/CMFPlomino/tests/samples.txt (that is what we use in our buildbot to run the Plomino continuous testing).
In Python you can do:
it returns all the object methods (which can be a bit much for Plone objects with deep inheritance trees);
it returns all the attributes as a dictionary;
it returns the class;
>>> hasattr(obj, "something")
tests if the object has an attribute or method named "something" ("something" may be found via acquisition; if you don't want acquisition, use shasattr from Products/Archetypes/utils.py).