简体   繁体   中英

PyTest - Specify cleanup tests in conftest.py

I am testing a service that requires starting and shutting down a gRPC server via a client's request. In my set of integration tests, I need to specify a set of pre-test and post-test actions that should happen before any given test is run within the set. Ideally, I would like to keep these pre/post-test methods in conftest.py or organize them into their own class within separate module.

I can specify the first test that should run (test that starts the server) by doing the following within conftest.py:

@pytest.fixture(scope="session", autouse=True)
def test_start_server():
    # code to start server

The problem is that when I execute another test module only the test_start_server function is executed and not the subsequent test_shutdown_request function further down in the file:

def test_shutdown_request():
    # code to shutdown server

Is there any way to specify the last test (post-test action) to be run?
If possible, I don't want to include any 3rd party dependencies or plugins, as my project already has enough.

I think you should use yield in your fixtures https://docs.pytest.org/en/6.2.x/fixture.html#yield-fixtures-recommended

@pytest.fixture(scope="session", autouse=True)
def server():
    # code to start server
    yield
    # code to stop server

def test_some():
    # some tests

def test_more():
    # some tests

This code create server once for session and shutdown your server after all tests.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM