Тестирование условного оператора с использованием Pytest - PullRequest
0 голосов
/ 14 марта 2019

Когда я запускаю тест, он показывает, что только 1 тест пройден.Как выполнить функцию test_function, чтобы она показывала, что все тесты пройдены.

Обратите внимание, что функция eval () не принимает никаких параметров.

import pytest

def eval():
    a=1  #got this value after calling some function (this can be 1,2,3 or any value)
    if a ==2:
        return 8
    elif a == 3:
        return 4
    else:
        return 42

@pytest.mark.parametrize("expected", [
        (8),
        (4),
        (42),
    ])
def test_eval(expected):
    assert eval() == expected

1 Ответ

1 голос
/ 14 марта 2019

Хорошо, после разъяснения в комментариях, что a является глобальным ... Было бы лучше, если бы это было не так. :)

Но если вы не можете изменить его подпись,

import pytest


def eval():
    if a == 2:
        return 8
    elif a == 3:
        return 4
    else:
        return 42


@pytest.mark.parametrize(
    "input_value, expected", [(2, 8), (3, 4), (4, 42)]
)
def test_eval(input_value, expected):
    global a
    a = input_value
    assert eval() == expected

должно помочь вам.

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