Я бы хотел изменить отображаемую строку идентификатора теста, чтобы сделать ее более читаемой. Мой пример использования - это тест, который предоставляет список приемлемых устройств для прибора, который затем сопоставляет его с доступным устройством.
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, но я не увидел ничего, что я мог бы легко переопределить. Есть идеи?