Повторное использование структуры данных в pytest - PullRequest
0 голосов
/ 07 сентября 2018

Я работаю над довольно универсальной структурой данных Python, пока пишу тесты для каждой функциональности. Большинство тестов восстанавливают одну и ту же структуру, то есть с одинаковыми значениями, так что конкретный метод может быть протестирован. Например:

class T():
    def __init__(self, data):
        self.data = data

    def min(self):
        return 'min'

    def max(self):
        return 'max'

class TestT():
    def test_min():
        t = T(values)

        assert t.min() == 'min'

    def test_max():
        t = T(values)

        assert t.max() == 'max'

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

Примечание: я знаю, что мог бы parametrize и getattr в этом конкретном примере, но он все равно будет создавать экземпляр t дважды, один раз для каждого теста.

Попытка

Я посмотрел на pytest.fixtures , однако, похоже, что возвращение этого приспособления t просто сделало бы то же самое, создав его экземпляр.

Pytest кеш , кажется, для этого, но я не понимаю из документации, как его использовать (что такое request в примере?).

Наконец, просто сохранение t в переменной (класса), по-видимому, не ускоряет тесты.

1 Ответ

0 голосов
/ 10 сентября 2018

Кажется, что мое понимание приспособлений pytest было неполным.Следующее работает просто отлично:

class Test():
    @pytest.fixture(scope='class')
    def data(self):
        return ...

    def test_min(data):
        assert data.min() == 'min'

    def test_max(data):
        assert data.max() == 'max'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...