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

Допустим, у меня есть следующий класс:

class SimpleClass:

    def __init__(self, value):
        self.__value = value

    @property
    def value(self):
        return self.__value

    def power_value(self, power):
        return self.value**power

Я создам экземпляр этого класса.

x = SimpleClass(2)

Я хочу создать тест, который будет утверждать, что *Метод 1007 * отлично работает, сравнивая его с ожидаемым результатом.

def test_power_value(simple, power, result):
    assert simple.power_value(power) == result

Я ищу правильный способ реализовать это с pytest, поскольку, как я это делаю, он бросает мнеошибка (pytest ищет simple, power и result в качестве приборов).В конечном итоге я хотел бы использовать этот тест следующим образом:

test_power_value(x, 2, 4)

with pytest.raises(AssertionError):
    test_power_value(x, 2, 5)

1 Ответ

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

То, что вы определяете как «test_power_value», на самом деле будет не тестом, а вспомогательной функцией в pytest.

В pytest вы запускаете тестовые функции в своем коде - pytest выполняет тесты для вас - вот почемуищу светильники.Просто переименуйте вашу функцию, чтобы она не начиналась с «test»

def assert_power_value(simple, power, result):
    assert simple.power_value(power) == result

И вы можете использовать это в тесте:

def test_foo():
    x = 1
    with pytest.raises(AssertionError):
        assert_power_value(x, 2, 5)

и десять запустите ваши тесты:

pytest your_test_file.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...