Π ΡƒΠ±Ρ€ΠΈΠΊΠΈ
Π‘Π΅Π· Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠΈ

🐍 ВСстированиС ΠΊΠΎΠ΄ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄Π° с PΡ‚ΠΎΠΉ

Как ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Sysadmin, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я знаю, Python – это язык Π²Ρ‹Π±ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сцСнарии. А Ρ‚Π°ΠΊΠΆΠ΅, Как … с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Python, Sysadmin, тСстированиС.

Как ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ 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”