2016-06-01 11 views
7

I miei parametri determinano il nome del mio parametro pytest. Userò alcuni parametri randomizzati per questi test. Per non incasinare i nomi dei miei report in junit, mi piacerebbe creare un nome statico per ogni test parametrizzato.Ignora il nome di una funzione parametrica pytest

È possibile?

JUnit sembra avere un parametro: 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): 

Ho provato sovrascrittura request.node.name tuttavia posso solo rinominarlo durante l'esecuzione del test.

Sono quasi sicuro che sia necessario scrivere un plug-in o un dispositivo. Quale pensi che sarebbe il modo migliore per fare questo?

risposta

8

Stai cercando il ids argomento pytest.mark.parametrize:

elenco di identificatori di stringa, o un callable. Se stringhe, ognuna corrisponde a agli argvalues ​​in modo che facciano parte dell'id test. Se richiamabile, lo deve prendere un argomento (un singolo argvalue) e restituire una stringa o restituire Nessuno.

Il codice sarà simile

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