Приспособление Pytest, возвращающее кратные

Возможно ли иметь прибор, который возвращает словарь и фрейм данных?

import somefile
import pytest

@pytest.fixture()
def setup():
    dictionary, dataframe = somefile.get_Di_And_Df()
    return(dictionary, dataframe)

def test_check(setup):
    assert dictionary['movie']['action'] == 'Avengers'
    assert dataframe.shape[0] == 5

2 ответа

Решение

Возвращаемое значение (или выходное значение) прибора буквально является объектом, введенным в качестве аргумента функции во время выполнения теста:

def test_check(setup):
    dictionary, dataframe = setup
    assert dictionary['movie']['action'] == 'Avengers'
    assert dataframe.shape[0] == 5

Самый читаемый способ вернуть namedtuple в приспособлении:

from collections import namedtuple

import somefile
import pytest

@pytest.fixture()
def setup():
    dictionary, dataframe = somefile.get_Di_And_Df()
    return namedtuple("Setup", "dictionary dataframe")(dictionary, dataframe)


def test_check(setup):
    assert setup.dictionary['movie']['action'] == 'Avengers'
    assert setup.dataframe.shape[0] == 5

Вы можете издеваться над вызываемым методом

@patch("somefile.get_Di_And_Df", MagicMock=(return_value=(dictionary, dataframe)))
def test_check():
  _dict, _df = somefile.get_Di_And_Df()
  assert _dict['movie']['action'] == 'Avengers'
  assert _df.shape[0] == 5
Другие вопросы по тегам