2016-06-01 5 views
7

Мои параметры определяют имя моего параметризованного pytest. Я буду использовать некоторые рандомизированные параметры для этих тестов. Чтобы мои имена отчетов в junit не перепутались, я хотел бы создать статическое имя для каждого параметризованного теста.Переопределение имени параметрируемых функций pytest

Возможно ли это?

JUnit, кажется, есть параметр: 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 однако я могу только переименовать его во время выполнения теста.

Я почти уверен, что мне нужно написать плагин или светильник. Как вы думаете, как лучше всего это сделать?

ответ

8

Вы ищете ids аргумент pytest.mark.parametrize:

список строковых идентификаторов, или отозваны. Если строки, каждый соответствует значениям arg, так что они являются частью идентификатора теста. Если вызываемый, то должен принимать один аргумент (одно значение argvalue) и возвращать строку или return None.

Ваш код будет выглядеть

@pytest.mark.parametrize(
    ("testname", "op", "value"), 
    [ 
     ("testA", "plus", "3"), 
     ("testB", "minus", "1"), 
    ], 
    ids=['testA id', 'testB id'] 
) 
def test_industry(self, testname, op, value): 
Смежные вопросы