Для одного из моих проектов я написал новую конечную точку в приложении на колбе. У моего проекта было много предметов, которые построены друг на друга, поэтому я хотел протестировать различными способами и расширить мой ремень инструмента отладки Backeng. Вот 3 инструмента, которые я научился использовать и сейчас регулярно использовать для отладки кода Python. 🐍
Curl это инструмент командной строки для создания HTTP-запросов. Мне это нравится, потому что это быстрый путь к тестированию конечных точек делают то, что я ожидаю, но я нашел спутать с толку с толку.
Ломать анатомию скручиваемого
Пример Получить запрос на получение информации о конкретной студенческой информации
-В
не является обязательным и обозначает Verbose Отказ С этим вы увидите все детали запроса и ответа, которые обычно скрыты, что может быть полезно для отладки.
-H
обозначает Заголовок И это то, как указать дополнительные заголовки, которые включают в запрос, такие как токен аутентификации. В моем примере конечная точка может быть доступна только школьными сотрудниками, поэтому я добавил заголовок, чтобы указать, что я делаю внутренний запрос о происхождении. В противном случае, ответ запроса скажет, что я несанкционирован. (Не стоит знать, какой посланник для примера, но вот дополнительная информация, если вы любопытно: 1 & 2 )
Вам не всегда нужно указывать дополнительные заголовки (зависит от API или типа запроса), и вы можете включить много заголовков в ваш запрос.
Пример Запрос на почту, чтобы сделать новый студент
-X Пост
выполнит почтовый запрос. -X
Позволяет изменить файл HTTP-метода, используемый по умолчанию.
-d
обозначает данные . С помощью этой опции вы можете указать, какие данные вы отправляете на HTTP-сервер, то то же самое, что делает браузер при заполнении формы и щелкните кнопку «Отправить». Существуют различные способы передачи данных в запросе CURL POST; В моем примере я отправляю JSON.
Content-Type
Поскольку я отправляю данные, мне нужно позволить серверу знать Формат данных Отказ
Переводчик Python это инструмент, который поставляется с вашей установкой Python. Это интерактивный Реп в котором вы можете ввести и выполнить код Python. Я часто использую его для импорта и взаимодействия с файлами, которые я написал.
Знакомство
Service_venv iPython
Как я запускаю переводчик. Но это чаще называют, набрав Python
или Python3.
(в зависимости от вашей установки). Примечание: IPython Обеспечивает дополнительные функции, чем стандартный переводчик Python, но показатели, которые я показываю, может быть выполнен в стандартном интерпретатере.
From app.models.student Import *
Импортирует определенный файл для использования в интерпретатере. Я указываю путь каталога Student.py Файл: есть папка приложение В каталоге верхнего уровня, который содержит папку модели который содержит файл Student.py Отказ Импорт *
утверждает, что я хочу все ( *
) в этом файле. Примечание. При импорте файла не добавляйте файл окончания.
Необходим оператор импорта; Без этого, в моем примере, Студентмодель
и .спасти ()
будет неопределен, и переводчик Python бросит сообщение об ошибке.
Все установленные, и теперь я могу проверить, если мой код работает как ожидалось!
В этом примере я проверяю определенный метод get_students
в переводчике Python.
Каковы некоторые расследования, которые я мог сделать? Возможно, я могу проверить, что происходит, когда пользователь проходит в строковом значении. Или я вижу, что произойдет, если пользователь проходит в действительное целочисленное значение, но студент с этим идентификатором не существует. Я возвращаю полезное сообщение об ошибке? В методе get_students.
Я не сделал обработку ошибок … пока! По моему опыту, тестирование в переводчике Python было прекрасно для «ооооо» Да, нужно добавить это “реализацию.
3. Питиш
Pteest Является ли структура тестирования Python, которая может быть установлена быстро для проведения тестов и сообщать о результатах. Это также другой инструмент командной строки!
Вот пример теста интеграции, который тестирует, что вызов Get возвращает ожидаемые данные.
Я узнал, как писать тесты, изучая примеры, и я был смущен тем, какие ценности были в тесте, Как json_body Отказ Таким образом, я бы прошел тестирование деталей и добавить операторы печати, как в примере ниже. Но при запуске теста я бы не видел вывод операторов печати. 🧐
-s
python -m pteest
как вызывать тестирование через переводчик Python. Service_venv
специфичен для моей среды развития.
Тесты/интеграция/test_student_resource.py
Это путь каталога файла, который я хочу проверить.
-s
это звезда этого примера. Добавление этого Опция Позволяет все утверждения печати в тестах напечатаны в терминале при запуске тестов. Теперь я смогу увидеть ценность Печать (json_body) Отказ
Pytest – мощный инструмент с мощными функциями, но этот маленький -s
Флаг помог мне отладить и научиться писать тесты.
И это все! Я взволнован, чтобы посмотреть, какие другие инструменты отладки я забираю, когда я продолжаю работать на Backend Projects.
Оригинал: “https://dev.to/scarlettperry/debugging-python-code-in-the-terminal-with-examples-d39”