Pytest.fixture

Pytest Fixtures 是什麼

Pytest 的 Fixtures 是進行軟體測試籌備(Arrange)階段時,用於準備測試所需物件、環境的函式。在 Pytest 中,只需要在 test case 中直接加入已經定義好的 fixture name 作為參數,則可以直接使用該 fixture,test case 可以調用多個定義好的 fixture ,fixture 也可以調用其他 fixture,因此 fixture 是相當彈性、可擴充並且是明確定義的(explicit)。

Start from a Quick Example

import pytest

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

    def __eq__(self, other):
        return self.name == other.name

@pytest.fixture
def my_fruit():
    return Fruit("apple")

@pytest.fixture
def fruit_basket(my_fruit):
    return [Fruit("banana"), my_fruit]

def test_my_fruit_in_basket(my_fruit, fruit_basket):
    assert my_fruit in fruit_basket

def test_fruit_name_is_string(my_fruit):
    assert type(my_fruit.name) is str