Приспособление 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