Список заполнения Pytest в настройке и использовать для тестовых случаев - PullRequest
0 голосов
/ 29 августа 2018

Прежде всего: вероятно, уже есть сотни ответов на этот вопрос, и я прошу прощения за то, что спросил, но я просто ... не понимаю.

Я хочу использовать список в некоторых тестах, который анализируется из csv-файла. Поскольку я не хочу анализировать список несколько раз, я хочу сделать это во время процесса установки.

Документация Pytest рекомендует приспособления для этого. Я полагаю, что я использую их так:

@pytest.fixture()
def init_my_list():
    return my_service.read_from_csv('my_file.csv')

, а затем при необходимости позвоните:

def test_get_info():
    test_date = datetime.datetime(year=2018, month=8, day=15, hour=6)
    assert (some, values) == myservice.get_prediction_for_datetime(test_date, init_my_list)

Это возвращает

TypeError: объект 'function' не повторяется

потому что myservice.function выполняет итерацию по заданному списку, но прибор возвращает функцию вместо списка.
Все, что мне нужно, это список, который создается при настройке, а затем может быть использован в моих тестовых примерах. Как мне решить эту простую задачу?

Вся трассировка в соответствии с запросом:

def get_prediction_for_datetime (dt: дата-время, прогноз-список-список: список) -> (int, float):
попробовать:

результат = следующий (х для х в предиктивном списке, если dt.hour == x [0] .hour and dt.day == x [0] .day и dt.month == x [0] .month и dt.year == x [0] .year)
Е Ошибка типа: объект 'function' не повторяется

1 Ответ

0 голосов
/ 29 августа 2018

Вы должны сдать init_my_list в тест:

@pytest.fixture()
def init_my_list():
    return [1, 2, 3]

def test_1(init_my_list):
    assert init_my_list == [1, 2, 3]  # will succeed

def test_2():
    assert init_my_list == [1, 2, 3]  # will fail

Кроме того, по умолчанию каждый прибор вызывается только один раз для функции . Если вы хотите вызвать его один раз для модуля или сеанса , вам необходимо передать соответствующий аргумент scope= в fixture. См. Документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...