0
0
PyTesttesting~10 mins

Factory fixtures in PyTest - Test Execution Trace

Choose your learning style9 modes available
Test Overview

This test uses a factory fixture to create user objects with different names. It verifies that the created user has the expected name.

Test Code - pytest
PyTest
import pytest

class User:
    def __init__(self, name):
        self.name = name

@pytest.fixture
def user_factory():
    def create_user(name):
        return User(name)
    return create_user

def test_user_name(user_factory):
    user = user_factory("Alice")
    assert user.name == "Alice"

    user2 = user_factory("Bob")
    assert user2.name == "Bob"
Execution Trace - 8 Steps
StepActionSystem StateAssertionResult
1Test startspytest test runner initialized-PASS
2pytest discovers test_user_name and user_factory fixtureFixtures ready to be injected-PASS
3pytest calls user_factory fixture to get create_user functionuser_factory returns create_user function-PASS
4test_user_name calls create_user("Alice") to create user objectUser object with name 'Alice' createdCheck user.name == 'Alice'PASS
5test_user_name asserts user.name == 'Alice'User name is 'Alice'user.name == 'Alice'PASS
6test_user_name calls create_user("Bob") to create second user objectUser object with name 'Bob' createdCheck user2.name == 'Bob'PASS
7test_user_name asserts user2.name == 'Bob'User name is 'Bob'user2.name == 'Bob'PASS
8Test ends successfullyAll assertions passed-PASS
Failure Scenario
Failing Condition: The user_factory returns a user with incorrect name or None
Execution Trace Quiz - 3 Questions
Test your understanding
What does the user_factory fixture return?
AA string with the user name
BA User object named 'Alice'
CA function that creates User objects with a given name
DNone
Key Result
Using factory fixtures allows creating multiple test objects with different data easily, improving test flexibility and reducing code duplication.