Установить идентификатор параметра pytest в приборе - PullRequest
0 голосов
/ 25 мая 2019

Я бы хотел изменить отображаемую строку идентификатора теста, чтобы сделать ее более читаемой. Мой пример использования - это тест, который предоставляет список приемлемых устройств для прибора, который затем сопоставляет его с доступным устройством.

import pytest
import random

AVAILABLE_FISH = ["TUNA", "SALMON", "TROUT", "ANCHOVIES", "LIONFISH", "PUFFERFISH"]

@pytest.fixture(scope="function")
def cooked_fish(acceptable_fish):
    """
    Takes a list of acceptable fish and matches them with what is available in the kitchen.
    """

    matches = [f for f in acceptable_fish if f in AVAILABLE_FISH]
    assert len(matches) > 0, "We couldn't find the right fish for you. May we suggest the lobster?"
    return random.choice(matches)

@pytest.mark.parametrize("acceptable_fish", [["CATFISH", "ANCHOVIES"]])
def test_feed_me(cooked_fish):
    assert is_tasty(cooked_fish), "This fish is NOT tasty"

В идеале будет отображаться как:

test_feed_me[ANCHOVIES]

Но вместо этого отображается как:

test_feed_me[acceptable_fishes0]

Мне известна возможность установки идентификатора параметра в аргументе ids в @pytest.mark.parametrize, а также в ловушку pytest_make_parametrize_id. Однако ни одна из этих опций не работает, потому что они устанавливают идентификатор до , и прибор выбора выбрал подходящее устройство, и поэтому не знает достаточно, чтобы напечатать что-нибудь полезное.

Я думаю, что решение состоит в том, чтобы как-то установить идентификатор в приборе cooked_fish. Я проколол ручку request pytest, но я не увидел ничего, что я мог бы легко переопределить. Есть идеи?

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