Hello Bruno, Thanks for the insightful reply.
That's a neat trick -- depending on pytest's class name collection approach to create a hierarchy for tests. This approach addresses both, the sharing of tests/fixtures as well as having custom tests/fixtures. It might also be possible to be 'smart' w.r.t the parameters in parameterised tests. I'm going through your book now. Thanks again, Steve On Mon, 2023-02-06 at 13:27 -0300, Bruno Oliveira wrote: > Hi Steve, > > One technique which I have used for this scenario is to declare a base class > containing the "common" tests. The class > should not have the "Test" prefix/suffix as to not be collected by pytest. > > Then on the sibling projects, you create a Test subclass from the base class, > which in turns makes it collectible by > pytest. One point you want to address is how to customize the tests somehow > on the sibling project. If you are already > using a fixture based system, it is easy to overwrite the fixture in the > subclass to return project-specific data > which makes sense in that context. > > I describe this technique in detail in my pytest book, pytest Quickstart > Guide if you want more details. > > Hope this points you in the right direction. > > Cheers, > Bruno. > > On Mon, Feb 6, 2023 at 1:21 PM Steve <st...@lonetwin.net> wrote: > > Hello, > > > > I'm look for some advice regarding restructuring tests/test layout for an > > existing project using pytest. > > > > Forgive me if this isn't the correct forum for this sort of questions. I'm > > sending this here because I felt this > > doesn't > > really qualify as a bug/issue to be raise on github. > > > > Here's what I am looking for -- I'd like to update / restructure test > > within an existing project which initially was > > developed as a webapp for a single client/customer but is now being > > refactored to allow for a multi-client / multi- > > tenent setup. > > > > The current tests layout is pretty standard with the tests/ directory > > living next to the src/ directory and a top- > > level > > conftest.py with fixtures. > > > > In the new version of the app, we would like to have tests that are: > > > > a. Common for all deployments and are entirely independent of customer > > configuration > > b. Common tests per customer configuration (potentially using parameterised > > fixtures and/or tests) > > c. Customer specific tests (potentially using markers) > > > > I am curious whether there are any best-practices I could adopt and > > pitfalls I ought to be aware of. > > > > Additionally, any recommendations on tests directory layout and fixture > > approaches would also help. > > > > Ideally, the setup should be flexible enough so that we might to exercise > > all the tests (for all customers) or > > select > > all the common tests + parameterized tests + customer specific tests for a > > specific customer. > > > > I'm considering a combination of using custom commandline options[1] and > > markers to do this. > > > > Does a structure like... > > > > tests > > |- conftest.py > > |- tests_common/ > > | |- tests_parameterized.py > > ! |- tests_independent.py > > |- customer1/ > > | |- conftest.py > > | |- tests_speciic.py > > |- customer2/ > > |- ... > > > > make sense ? > > > > I know this is all a bit high-level and vague but I'm trying to learn from > > any of you who might have done this > > before. > > So, I recognise and appreciate in advance any time you put into replying to > > this. > > > > cheers, > > Steve > > > > > > [1] > > https://docs.pytest.org/en/7.2.x/example/simple.html#control-skipping-of-tests-according-to-command-line-option > > _______________________________________________ > > pytest-dev mailing list > > pytest-dev@python.org > > https://mail.python.org/mailman/listinfo/pytest-dev
_______________________________________________ pytest-dev mailing list pytest-dev@python.org https://mail.python.org/mailman/listinfo/pytest-dev