Bird
0
0

You want to ensure a database connection is closed after each test using a fixture. Which approach correctly uses request.addfinalizer to close the connection?

hard🚀 Application Q8 of 15
PyTest - Fixtures
You want to ensure a database connection is closed after each test using a fixture. Which approach correctly uses request.addfinalizer to close the connection?
Adef db_conn(request): conn = open_db() def close(): conn.close() request.addfinalizer(close) return conn
Bdef db_conn(): conn = open_db() request.addfinalizer(conn.close) return conn
Cdef db_conn(request): conn = open_db() conn.close() request.addfinalizer(conn.close) return conn
Ddef db_conn(request): conn = open_db() yield conn conn.close()
Step-by-Step Solution
Solution:
  1. Step 1: Verify request parameter and finalizer function

    def db_conn(request): conn = open_db() def close(): conn.close() request.addfinalizer(close) return conn defines a cleanup function that calls conn.close() and registers it with request.addfinalizer.
  2. Step 2: Check other options for correctness

    def db_conn(): conn = open_db() request.addfinalizer(conn.close) return conn lacks request parameter; def db_conn(request): conn = open_db() conn.close() request.addfinalizer(conn.close) return conn calls close immediately; def db_conn(request): conn = open_db() yield conn conn.close() uses yield, not addfinalizer.
  3. Final Answer:

    def db_conn(request): conn = open_db() def close(): conn.close() request.addfinalizer(close) return conn -> Option A
  4. Quick Check:

    Wrap cleanup in function and addfinalizer with request param [OK]
Quick Trick: Wrap cleanup code in function, add with request.addfinalizer [OK]
Common Mistakes:
MISTAKES
  • Calling close immediately instead of in finalizer
  • Missing request parameter
  • Confusing yield fixtures with addfinalizer

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More PyTest Quizzes