2016-06-01 56 views
7

Parametrelerim, parametrelenmiş bir pytest'imin adını belirler. Bu testler için bazı randomize param kullanacağım. Junit'teki raporlarımın dağılmaması için, her bir parametrelenmiş test için statik bir isim oluşturmak istiyorum.Bir pytest parametreleştirilmiş fonksiyonlar ismini geçersiz kıl

Mümkün mü? Ben sadece deney yürütülürken yeniden adlandırabilirsiniz ancak 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): 

Ben request.node.name üzerine yazarak çalıştı:

JUnit bir parametre var gibi gözüküyor.

Neredeyse bir pozitif veya bir eklenti veya fikstür yazmam gerek. Bunun hakkında düşünmenin en iyi yolu nedir?

cevap

8
Sen pytest.mark.parametrize ait ids argüman aradığınız

:

dize kimlikleri listesi veya bir çağrılabilir. Dizeler varsa, her biri, argümanlara, test kimliğinin bir parçası olacak şekilde 'a karşılık gelir. Kalibre edilebiliyorsa, tek bir argümanı (tek bir argvalue) almalı ve bir dize döndürmeli veya dönüş Hiçbiri. Kodunuz

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

olmazdı