1

I'm having some real difficulty in running a pytest fixture within a conftest file only once when the tests are run in parallel via a shell script. Contents of the shell script are below:

#!/usr/bin/env bash
pytest -k 'mobile' --os iphone my_tests/ &
pytest -k 'mobile' --os ipad my_tests/
wait

The pytest fixture creates resources for the mobiles tests to use before running the tests:

@pytest.fixture(scope='session', autouse=True)
def create_resources():
    // Do stuff to create the resources
    yield
    // Do stuff to remove the resources

When running each on its own it works perfectly. Creates the resources, runs the tests and finally removes the resources it created. When running in parallel (with the shell script) both try to run the create_resources fixture at the same time.

Does anyone know of a way I can run the create_resource fixture just once? If so then is it possible for the second device to wait until the resources are created before all devices run the tests?

  • You could use some kind of file lock, for example try to create a lock file in exclusive mode before setup and delete it on shutdown - you would also need some means to wait to detect that the setup is complex to be able to wait for it. – MrBean Bremen Jul 10 '20 at 04:12

0 Answers0