как изменить pytest сгенерированные параметры - PullRequest
0 голосов
/ 03 февраля 2019

есть ли возможность изменить параметр test_zerodivision при выполнении функции test_equals

, когда test_equals работает, функция test_zerodivision имеет значение a = 1 b = 0, но я хочу изменить значение a или b в этой функции

Могу ли я изменить TestClass.params, затем перезагрузить pytest_generate_tests или любым другим способом

Я знаю, как избежать этой проблемы, но я просто хочу знать, как изменить значение.Пытешь много черной магии, мне просто любопытно

import pytest


def pytest_generate_tests(metafunc):
    # called once per each test function
    funcarglist = metafunc.cls.params[metafunc.function.__name__]
    argnames = sorted(funcarglist[0])
    metafunc.parametrize(argnames, [[funcargs[name] for name in argnames]
            for funcargs in funcarglist])

class TestClass(object):
    # a map specifying multiple argument sets for a test method
    params = {
        'test_equals': [dict(a=1, b=2), dict(a=3, b=3), ],
        'test_zerodivision': [dict(a=1, b=0), ],
    }

    def test_equals(self, a, b):

        assert a == b

    def test_zerodivision(self, a, b):
        with pytest.raises(ZeroDivisionError):
            a / b

1 Ответ

0 голосов
/ 03 февраля 2019

Я думаю, что вы ищете pytest.mark.parametrize .Вот пример того, как реализовать эту функциональность в вашем коде:

import pytest


class TestClass:    
    @pytest.mark.parametrize(
        ('a', 'b'),
        (
            (1, 1),
            (3, 3),
            ('a', 'a')
        )

    )
    def test_equal(self, a, b):
        assert a == b

    @pytest.mark.parametrize(
        ('a', 'b'),
        (
            (1, 0),
            (0, 0),
            (0.1, 0)
        )
    )
    def test_zerodivision(self, a, b):
        with pytest.raises(ZeroDivisionError):
            a / b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...