Package: anybox.testing.openerp
This distribution is intended to provide testing tools and especially
unit test base classes to enhance those that come builtin with OpenERP
(version >= 7)Currently, it features these base test classes:SharedSetupTransactionCaseTransactionCaseHow to installin general, all you need is to makeanybox.testing.openerpimportable from the python executable that is to run the tests.Users of theBuildout recipejust have to addanybox.testing.openerpto their lists of eggs, preferably in a
buildout configuration intended for developers:[buildout]
extends = buildout.cfg

[openerp]
eggs += anybox.testing.openerp(assuming of course that the part installing OpenERP is namedopenerp)SharedSetupTransactionCasefrom anybox.testing.openerp import SharedSetupTransactionCaseThis class allows to mutualize at the test class level
test data preparations, so that it does not have to be executed again
and again. It relies internally on PostgreSQL savepoints to do so.The simplest usage is to load some XML files:class MyTestCase(SharedSetupTransactionCase):

    _data_files = ('employees.xml',
                   'products.xml')

    _module_ns = 'tests'Paths are relative to the directory holding the test python modules
(typicallytests) ;_module_nsis meant to specify in which
(existing or not) OpenERP module’s namespace the data is to be
inserted. This is necessary, e.g., for cross-referencing inone2manyvalues.You may also subclass theinitTestDataclass
method to insert your own preparations:@classmethod
def initTestData(cls):
    # if you need them XML data files:
    super(MyTestCase, cls).initTestData()
    cls.initLotsOfStuff()Finally, this class comes equipped with theutility and assertion methods.TransactionCasefrom anybox.testing.openerp import TransactionCaseThis is a simple subclass ofopenerp.tests.common.TransactionCasefeaturing:theutility and assertion methods(in Python >= 2.7 context only) a more robusttearDownthat
protects against exceptions duringsetUp.Such exceptions have been witnessed to cause PostgreSQL to deadlock,
which is a major source of developper headaches and of loss of time.Utility and assertion methodsBothTransactionCaseandSharedSetupTransactionCasefeature
additional helper methods. These areassertRecord()searchUnique()readUnique()assertUniqueWithValues()They allow for more direct writing and more readability.
Check the docstrings for more details. This documentation should get
Sphinxed soon.Why a separate packageWe (Anybox) are very open to direct inclusion in OpenERP core, and are ready
to submit this as a proper merge request (hence involving a
bit more of our own resources than has already been done).That being said, the reasons for a separate package are:we don’t want to depend on actual inclusion in the core for
our projectswe need this to be available in v7 branch (current stable)we might want or need to stay ahead of whichever inclusions can occur in
the future ; using a published version is more convenient for us
than keeping track in our private VCSes.Why not an addon ?Do youreallywant to see a module for unit testing to appear in
your modules list ?AuthorsGeorges Racinet (@gracinet on identi.ca & twitter), Anybox SAS,http://anybox.fr, GPG: 0x33AB0A35 on public key servers.ContributingWe are very open to contributions. Don’t hesitate to fork and issue
pull requests on theBitBucket repositoryChanges1.3.1 (2014-01-31)#2: robustness ofassertRecordifread(cr, uid, id)returns
a list.1.3 (2013-12-26)added a newassertUniqueWithValues()utility, combiningsearchUnique()withassertRecordto save even more hassle.1.2 (2013-11-07)added a newassertNoRecord(model, domain)utility1.1 (2012-08-05)added utility and assertion methodscorrected documentation1.0 (2012-07-13)initial release