2016-06-01 13 views
7

Moje parametry określają nazwę sparametryzowanego pytestu. Będę używał losowych params dla tych testów. Aby moje raporty z nazwami w junit nie były pomijane, chciałbym utworzyć statyczną nazwę dla każdego sparametryzowanego testu.Zastąp jedną sparametryzowaną nazwą funkcji

Czy to możliwe?

JUnit wydaje się mieć parametr: Changing names of parameterized tests

class TestMe: 
    @pytest.mark.parametrize(
     ("testname", "op", "value"), 
     [ 
      ("testA", "plus", "3"), 
      ("testB", "minus", "1"), 
     ] 
    ) 
    def test_ops(self, testname, op, value): 

Próbowałem nadpisując request.node.name jednak mogę tylko zmienić jego nazwę podczas wykonywania testu.

Jestem prawie pozytywny albo muszę napisać wtyczkę lub urządzenie. Jak myślisz, jaki byłby najlepszy sposób na zrobienie tego?

Odpowiedz

8

Patrzysz na ids argument pytest.mark.parametrize:

lista identyfikatorów łańcuchowych lub wymagalne. Jeśli łańcuchy, każdy odpowiada do argvalues ​​tak, że są częścią identyfikatora testu. Jeśli jest to możliwe, to powinien przyjąć jeden argument (pojedynczy argument) i zwrócić ciąg znaków lub return Brak.

Twój kod będzie wyglądać

@pytest.mark.parametrize(
    ("testname", "op", "value"), 
    [ 
     ("testA", "plus", "3"), 
     ("testB", "minus", "1"), 
    ], 
    ids=['testA id', 'testB id'] 
) 
def test_industry(self, testname, op, value):