Как в Python 3 с помощью Pytest проверить код выхода: exit (1) и exit (0) для программы python? - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в Pytest в python.

Я столкнулся с сложным сценарием, когда мне нужно проверить коды выхода - exit (1) и exit (0), используя модуль Pytest. Ниже представлена ​​программа python:

 def sample_script():
     count_file  = 0
     if count_file == 0:
        print("The count of files is zero")
     exit(1)
     else:
         print("File are present")
     exit(0)

Теперь я хочу протестировать вышеуказанную программу на наличие кодов выхода, выхода (1) и выхода (0). Как с помощью Pytest создать код теста, чтобы мы могли протестировать или активировать код выхода функции sample_script?

Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 17 июня 2020

После того, как вы поместите exit(1) в блок if, как предлагается, вы можете проверить исключение SystemExit :

from some_package import sample_script


def test_exit():
    with pytest.raises(SystemExit) as pytest_wrapped_e:
        sample_script()
    assert pytest_wrapped_e.type == SystemExit
    assert pytest_wrapped_e.value.code == 42

Пример взят отсюда: https://medium.com/python-pandemonium/testing-sys-exit-with-pytest-10c6e5f7726f

ОБНОВЛЕНИЕ:

Вот полный рабочий пример, который вы можете скопировать / вставить для тестирования:

import pytest

def sample_func():
    exit(1)

def test_exit():
    with pytest.raises(SystemExit) as e:
        sample_func()
    assert e.type == SystemExit
    assert e.value.code == 1

if __name__ == '__main__':
    test_exit()
...