Hi Nicolas, On Sun, Apr 03, 2011 at 23:51 +0200, Nicolas Évrard wrote: > Hello, > > I develop on tryton[1] and I'd like to use py.test to test the new > modules I am writing for it. > > This framework has a concept of modularity that allows some module to > override the definition of objects. An example will probably help > understanding the situation. > > So we have the base trytond module which contains a `modules` > directory with the list of available modules (they are all imported > but not necessarily installed). > > project/ > bin/ > trytond/ > modules/ > ... > sale/ > sale_cost/ > ... > > So when you install the sale_cost module the object defined on the > sale module are extended with more fields and the methods might be > extended to fit the business case. > > Currently I use a conftest.py file in the top directory in order to > define funcargs for my tests. But it looks like a suboptimal solution. > > I think I can use plugins in order to do the following: > > 1. Define a funcarg `sale` in the sale module > 2. Define a funcarg `sale` in the sale_cost module. This funcarg > should ideally use the funcarg from `sale` and extend it with > various information (if allowed to do so by the business rule). > 3. Calling py.test trytond/modules/sale_cost from the project/ > directory should work > > This setup would allow me to provide funcargs for use to other > developers on which they can base their own tests. > > Right now I noticed that the funcargs are loaded recursively. Do you > think it is possible to write a plugin that would read the dependency > information in the sale_cost module and use it to setup the conftests > file found in those modules to be imported *before* the conftest.py > from sale_cost ? > > If it is, do you have any pointers on how I can do this ?
request.getfuncargvalue() can be called to decorate an existing funcarg, see http://bit.ly/eiByLF However, i guess you could just have a single conftest.py which provides different values for your funcargs depending on which directory they are requested from. (``request.module.fspath`` gives you the file system path of the python module.) This way you would encode all the logic in one place. HTH, holger > BTW, py.test is a really nice piece of software and I really enjoy > using it. BTW, nice to hear :) > > [1]: http://www.tryton.org/ > > -- > (°> Nicolas Évrard > ( ) Liège > `¯ > _______________________________________________ > py-dev mailing list > py-dev@codespeak.net > http://codespeak.net/mailman/listinfo/py-dev _______________________________________________ py-dev mailing list py-dev@codespeak.net http://codespeak.net/mailman/listinfo/py-dev