ΠΠ°ΠΊ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄ΡΡΠ³ΠΎΠΉ Sysadmin, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π·Π½Π°Ρ, Python – ΡΡΠΎ ΡΠ·ΡΠΊ Π²ΡΠ±ΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ. Π, ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠ΅ Π·Π½Π°Π΅ΠΌ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ.
ΠΠΎΠΉ ΠΊΠΎΠ΄ – ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ°ΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Linux, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΊΠΎΠ΄ Π²ΡΡ ΠΎΠ΄Π° 2. ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ Ρ ptest? ΠΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π» (ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ):
ΠΠ°ΡΡΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ, ΡΡΠΎ Cli.py. :
from argparse import ArgumentParser
def create_parser():
parser = ArgumentParser()
parser.add_argument('list', help='List something')
...
return parser
ΠΡΠΏΡΡΠ°Π½ΠΈΡ:
import pytest
from parser import cli
@pytest.fixture
def parser():
return cli.create_parser()
def test_something_to_test(parser):
with pytest.raises(SystemExit) as e:
# The command to test
parser.parse_args(['some', 'commands'])
# Here's the trick
assert e.type == SystemExit
assert e.value.code == 2
ΠΡΠΈΠ³ΠΈΠ½Π°Π»: “https://dev.to/boris/testing-exit-codes-with-pytest-1g27”