Fixtures¶
Sometimes you need to prepare test data (load files, create objects etc.). If you want to prepare the same data for multiple tests, you can use a fixture.
Exercise 1: A module for test data¶
Create a new module conftest.py in the same directory as your tests.
There, add a function that loads the file data/mobydick_summary.txt:
Place the decorator @pytest.fixture on top of it:
import pytest @pytest.fixture def text_summary(): return open(...).read()
Exercise 2: Using the fixture¶
Now create a module test_corpus.py with a function that uses the fixture:
def test_short_sample(text_summary): assert count_words(text_summary) == 77
Execute the module with pytest. Note that you do not need to import conftest. Pytest does that automatically.
Exercise 3: Create more fixtures¶
Create a fixture for the full text of the book mobydick_full.txt as well.
Exercise 4: Fixtures from fixtures¶
Create a fixture in conftest.py that prepares a dictionary with word counts using the word_counter.count_words_dict() function.
from word_counter import count_words_dict @pytest.fixture def count_dict(text_summary): return ...
Write a simple test that makes sure the dictionary is not empty.