2016-06-01 2 views
7

매개 변수는 매개 변수화 된 pytest의 이름을 결정합니다. 나는이 테스트를 위해 무작위 화 된 params를 사용할 것이다. junit의보고 이름이 엉망이되지 않도록 각 매개 변수화 된 테스트에 대한 정적 이름을 작성하고 싶습니다.pytest 매개 변수화 된 함수 이름을 재정의합니다.

가능합니까? 난 단지 테스트 실행 중에 이름을 바꿀 수 있지만 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): 

내가 request.node.name을 덮어 시도 :

의 JUnit은 매개 변수를 갖고있는 것 같아요.

나는 거의 확실하다. 나는 플러그인이나 픽스쳐를 쓸 필요가있다. 이 문제를 해결하는 가장 좋은 방법은 무엇이라고 생각하십니까?

답변

8
당신은 pytest.mark.parametrizeids 인수를 찾고

:

문자열 ID의 목록 또는 호출은. 문자열 인 경우 argchue에 각각 이 해당하므로 테스트 ID의 일부가됩니다. 호출 가능하면 은 단일 인수 (단일 argvalue)를 취하여 문자열을 반환하거나 return 없음을 반환해야합니다. 코드는

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

보일 것이다