Bird
Raised Fist0
Selenium Pythontesting~5 mins

Fixtures for browser setup/teardown in Selenium Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a fixture in the context of Selenium testing with Python?
A fixture is a setup function that prepares the browser environment before tests run and cleans up after tests finish, ensuring tests start with a fresh browser state.
Click to reveal answer
beginner
Why use fixtures for browser setup and teardown in Selenium tests?
Fixtures help avoid repeating browser setup code in every test, make tests cleaner, and ensure the browser closes properly after tests to free resources.
Click to reveal answer
intermediate
How do you define a fixture in pytest for Selenium browser setup?
Use the @pytest.fixture decorator on a function that creates a browser instance, yields it for tests, and then closes the browser after tests complete.
Click to reveal answer
intermediate
What does the 'yield' keyword do in a pytest fixture for Selenium?
The 'yield' pauses the fixture to run the test using the browser, then resumes to perform cleanup like closing the browser after the test finishes.
Click to reveal answer
beginner
Show a simple pytest fixture example for opening and closing a Chrome browser with Selenium.
```python
import pytest
from selenium import webdriver

@pytest.fixture
 def browser():
  driver = webdriver.Chrome()
  yield driver
  driver.quit()
```
Click to reveal answer
What is the main purpose of a fixture in Selenium testing?
ATo generate test data
BTo set up and tear down the browser environment for tests
CTo write assertions in tests
DTo log test results
In pytest, which keyword is used inside a fixture to separate setup and teardown?
Ayield
Breturn
Cbreak
Dcontinue
What method is used to close the browser in Selenium Python after tests?
Adriver.quit()
Bdriver.close()
Cdriver.stop()
Ddriver.exit()
Why should browser setup code be placed in a fixture rather than inside each test?
ATo skip browser setup
BTo make tests run slower
CTo avoid using Selenium
DTo reduce code duplication and improve test clarity
Which decorator is used to define a fixture in pytest?
A@pytest.setup
B@pytest.test
C@pytest.fixture
D@pytest.browser
Explain how to create a pytest fixture for Selenium browser setup and teardown.
Think about setup before yield and cleanup after yield.
You got /4 concepts.
    Why is it important to close the browser after tests in Selenium?
    Consider what happens if browsers stay open after tests.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using a fixture for browser setup and teardown in Selenium tests?
      easy
      A. To avoid using assertions in tests
      B. To write test cases faster without any setup
      C. To automate opening and closing the browser before and after tests
      D. To run tests only on one browser type

      Solution

      1. Step 1: Understand fixture role

        Fixtures help prepare the environment before tests and clean up after tests.
      2. Step 2: Apply to browser context

        In Selenium, this means opening the browser before tests and closing it after.
      3. Final Answer:

        To automate opening and closing the browser before and after tests -> Option C
      4. Quick Check:

        Fixture = setup + teardown automation [OK]
      Hint: Fixtures handle setup and cleanup automatically [OK]
      Common Mistakes:
      • Thinking fixtures replace test cases
      • Believing fixtures remove need for assertions
      • Assuming fixtures limit browser types
      2. Which of the following is the correct way to define a pytest fixture for browser setup and teardown using yield?
      easy
      A. def browser(): driver = webdriver.Chrome() yield driver driver.quit()
      B. def browser(): driver = webdriver.Chrome() driver.quit() yield driver
      C. def browser(): yield webdriver.Chrome() driver.quit()
      D. def browser(): driver = webdriver.Chrome() driver.close() yield driver

      Solution

      1. Step 1: Understand yield usage in fixtures

        Yield separates setup (before yield) and teardown (after yield).
      2. Step 2: Check correct order

        Setup: create driver; yield it; teardown: quit driver.
      3. Final Answer:

        def browser(): driver = webdriver.Chrome() yield driver driver.quit() -> Option A
      4. Quick Check:

        Setup before yield, teardown after yield [OK]
      Hint: Setup before yield, teardown after yield in fixture [OK]
      Common Mistakes:
      • Calling quit before yield
      • Using driver.close() instead of driver.quit() for teardown
      • Yielding before creating driver
      3. Given this fixture and test code, what will be printed when the test runs?
      import pytest
      from selenium import webdriver
      
      @pytest.fixture
      def browser():
          driver = webdriver.Chrome()
          print('Setup browser')
          yield driver
          print('Teardown browser')
          driver.quit()
      
      def test_example(browser):
          print('Running test')
      medium
      A. Running test only
      B. Running test\nSetup browser\nTeardown browser
      C. Setup browser\nTeardown browser\nRunning test
      D. Setup browser\nRunning test\nTeardown browser

      Solution

      1. Step 1: Trace fixture execution order

        Fixture runs setup code before yield, then test runs, then fixture runs teardown after yield.
      2. Step 2: Match print statements order

        Prints 'Setup browser', then 'Running test', then 'Teardown browser'.
      3. Final Answer:

        Setup browser\nRunning test\nTeardown browser -> Option D
      4. Quick Check:

        Setup -> Test -> Teardown order [OK]
      Hint: Fixture setup prints before test, teardown prints after [OK]
      Common Mistakes:
      • Assuming teardown runs before test
      • Ignoring yield separates setup and teardown
      • Thinking prints run all before test
      4. What is wrong with this fixture code for browser setup and teardown?
      @pytest.fixture
      def browser():
          driver = webdriver.Chrome()
          driver.quit()
          yield driver
      medium
      A. Missing import statement for webdriver
      B. Calling driver.quit() before yield closes browser too early
      C. Yield should be inside a try-except block
      D. Fixture should return driver instead of yield

      Solution

      1. Step 1: Analyze order of operations

        driver.quit() is called before yield, so browser closes before test uses it.
      2. Step 2: Understand yield role

        Yield should come before teardown to keep browser open during test.
      3. Final Answer:

        Calling driver.quit() before yield closes browser too early -> Option B
      4. Quick Check:

        Teardown must be after yield [OK]
      Hint: Teardown code must be after yield in fixture [OK]
      Common Mistakes:
      • Calling quit before yield
      • Confusing yield with return
      • Ignoring fixture import requirements
      5. You want to run multiple tests using the same browser instance to save time. How should you modify the fixture to achieve this?
      hard
      A. Change fixture scope to 'module' so browser opens once per module
      B. Add driver.quit() before yield to close browser early
      C. Remove yield and return driver directly
      D. Create a new fixture for each test to isolate browser

      Solution

      1. Step 1: Understand fixture scopes

        Default scope is 'function' which runs fixture per test; 'module' runs once per file.
      2. Step 2: Apply scope to reuse browser

        Setting scope='module' opens browser once for all tests in module, saving time.
      3. Final Answer:

        Change fixture scope to 'module' so browser opens once per module -> Option A
      4. Quick Check:

        Fixture scope controls reuse [OK]
      Hint: Use scope='module' to share browser across tests [OK]
      Common Mistakes:
      • Closing browser before tests run
      • Removing yield breaks setup/teardown
      • Creating new fixture per test wastes time
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard