Cameron Simpson wrote: > and it's failing. I've traced the failure cause, ending up with this > assertion message from the end of serialise() above: > > AssertionError: <class '__main__.Node'> HOST:foo:{} <class > 'cs.nodedb.node.Node'> > > Experienced users will see at once what's happened: I've made a Node > myself in the test using the local class, and the Node class is thus > __main__.Node. However, my sql Backend class has independently imported > the "Node" and "Backend" classes from "cs.nodedb.node". So when _it_ > calls serialise(), "Node" is "cs.nodedb.node.Node". > > And lo, the: > > if isinstance(value, Node): > > test at the top of serialise() fails. > > What's a sensible way of doing this correctly?
Move the unit tests into a separate script and have that import the module cs.nodedb.node. In general, avoid importing a module and at the same time using it as the main script. When persistent objects are involved "the same time" can even spread over distinct runs of separate scripts accessing the same data. Obvious? But you asked for a /sensible/ way. Peter -- http://mail.python.org/mailman/listinfo/python-list