Рубрики
Без рубрики

Тестирование Нажмите Приложения с Pтой

Это хорошая практика, как можно больше, пишите тесты для вашего кода. Если вы работаете с Python, … с меткой Python, тестирование, Pteest.

Создание приложений CLI с Python (9 частью серии)

Это хорошая практика, как можно больше, пишите тесты для вашего кода. Если вы работаете с Python, pteest Делает процесс написания и прогонственными тестами намного более гладким. Я написал несколько сообщений некоторое время назад на начало работы с тестированием с Pтойцами, поэтому, если вы полностью новичны, вы можете взглянуть на них:

Для тестирования приложений CLI нажмите предоставляет удобный модуль: Нажмите .testing У кого есть некоторые полезные функции (особенно Clirunner () ), чтобы помочь нам вызвать команды и проверять их поведение.

Мы пойдем вперед и проверим каждую часть Наше приложение – Создание, чтение, обновление и удаление.

Установка Pтойца и написание первого теста

Pтойцы могут быть установлены через PIP:

(env) $ pip install pytest

После установки Pтостастики создайте папку «Тесты» в корневом каталоге и добавьте первый тестовый файл:

(env) $ mkdir tests && cd tests

(env) $ touch test_app.py

В файле Test_app добавьте следующий код для начала:

def test_add():
    pass

Чтобы запустить тест, запустить pteest На терминале:

(env) $ pytest
================== test session starts ====================
platform linux -- Python 3.7.3, pytest-5.1.0, py-1.8.0, pluggy-0.12.0
rootdir: /home/wangonya/code/contacts-cli
collected 1 item

tests/test_app.py .                              [100%]

================== 1 passed in 0.04s =======================

Тестирование команды add

Давайте отредактируем файл Test_app, чтобы добавить тест, чтобы увидеть, если Добавить Команда добавляет новый контакт:

from click.testing import CliRunner

from app import add

runner = CliRunner()

def test_add():
    response = runner.invoke(add, ["test-user", "-m", "0"])
    assert response.exit_code == 0
    assert "Contact test-user added!" in response.output
    assert "{'mobile': '0'}" in response.output

Во-первых, мы призываем команду, поскольку мы будем на терминале, проходя в необходимых аргументах и вариантах: Ответ .invoke (Добавить, [«Тест-пользователь», «-M», «0»]) Отказ

Затем мы проверяем, что команда успешно выполняется: Assert Response.exit_Code Отказ

Если команда успешно выполняется, мы ожидаем, что сообщение успеха должно быть возвращено в ответ со значениями, которые мы добавили:

assert "Contact test-user added!" in response.output
assert "{'mobile': '0'}" in response.output

Остальные тесты в значительной степени следуют тому же формату.

Тестирование команды списка

def test_list():
    response = runner.invoke(list)
    assert response.exit_code == 0
    assert "Here\'s a list of all your contacts:" in response.output
    assert "'test-user': {'mobile': '0'}" in response.output

Команда списка не принимает аргументов или вариантов, поэтому мы просто называем его напрямую: Ответ .invoke (список) .

Тестирование команды View

def test_view():
    response = runner.invoke(view, "test-user")
    assert response.exit_code == 0
    assert "{'mobile': '0'}" in response.output

Тестирование команды обновления

def test_update():
    response = runner.invoke(update, ["test-user", "-m", "12345"])
    assert response.exit_code == 0
    assert "Contact updated!" in response.output
    assert "{'mobile': '12345'}" in response.output

Тестирование команды delete

def test_delete():
    response = runner.invoke(delete, "test-user")
    assert response.exit_code == 0
    assert "Contact deleted!" in response.output

    # call view on test-user to confirm it doesn't exist
    response = runner.invoke(view, "test-user")
    assert response.exit_code == 0
    assert "The contact you searched for doesn't exist" in response.output

Улучшения

По мере роста вашего заявления вы можете рассмотреть вопрос об использовании Светильники и настроить такие вещи, как бегун В оформлении Conftest.py файл. Мы сошли с ним здесь, потому что наши тесты были простыми и всеми в одном файле. После введения нескольких тестовых файлов после подхода, который мы использовали здесь, приведет к большому количеству излишне дублированного кода.

Также мы сделали прямые звонки на нашу API в тестах. Эта операция должна в идеале издеваться.

Создание приложений CLI с Python (9 частью серии)

Оригинал: “https://dev.to/wangonya/testing-click-applications-with-pytest-2o79”