Эта статья участвует в "Месяце тем Python", подробнее см.Ссылка на мероприятие
Поиск по общедоступным номерам WeChat [Chengyuan Xiaozhuang] - Напрасных действий не бывает, важен каждый шаг
предисловие
В разработке проекта много функций, обычно разработчикам нужно выполнятьсамопроверка, разве что с помощьюpostman
В дополнение к тестированию с помощью других инструментов вам также необходимо написать модульные тесты для проверки разработанного кода и использовать модульные тесты, чтобы определить, может ли код соответствовать требованиям.pytest
Модули — это очень полезный фреймворк, который поддерживает не только простое тестирование, но и сложное функциональное тестирование приложений.
Введение в pytest
Цитата здесьpytest
официальная документацияСодержание в:pytest is a mature full-featured Python testing tool that helps you write better programs.
Getting start
установка pytest
pytest
Операционная среда:python3.6 3.7 3.8 3.9 pypy3
.Выполните следующую команду в командной строке, чтобы установитьpytest
:
pip install pytest
После завершения установки выполните следующую команду, чтобы проверить, прошла ли установка успешно:
pytest --version
pytest 6.2.4
первый тест
Простой тест для функции можно создать в четырех строках кода.
# test.py
def func(x):
return x+1
def test_answer():
assert func(5) == 7
Можно выполнить следующееpytest
Команда для проверки работоспособности.
100%
Относится к общему прогрессу выполнения всех тестовых случаев после завершения,pytest
Отображается отчет об ошибке с указанием точной причины ошибки.pytest
Можно указать файлы для тестирования, чащеpytest
запустит все файлы в текущем каталоге и подкаталогахtest_*.py
или*_test.py
файл формы.
Несколько тестов в классе
Если вы написали несколько тестовых случаев, вы можете поместить несколько тестовых случаев в один и тот же класс, но вам нужно убедиться, что тип имеет префиксTest
, иначе будетpytest
перепрыгни.
class TestDemo:
def test_one(self):
x = 'this'
assert 'h' in x
def test_two(self):
x = 'hello'
assert hasattr(x, 'check')
Ниже приведено использованиеpytest
В результате выполнения теста при написании теста в классе необходимо учитывать два момента: во-первых, имя класса должно иметьTest
префикс, а во-вторых, вам не нужно создавать экземпляр объекта при использовании класса для тестирования,pytest
автоматически найдетtest_
Выполнение префиксного метода.
Usage and Invocations
Exit codes
Я не знаю, есть ли какие-нибудь осторожные друзья, которые обнаружили, что после использования pycharm для запуска программы она будет отображатьProcess finished with exit code 0
, указывая на то, что программа завершила работу в обычном режиме и работаетpytest
также появляются, когдаexit code
, а может быть около 6 различныхexit code
:
exit code 0: Все тесты собраны и успешно пройдены
exit code 1: собрал и запустил тесты, но некоторые тесты провалились
exit code 2: Прервано во время выполнения теста
exit code 3: Произошла внутренняя ошибка при выполнении теста
exit code 4: ошибка использования команды pytest
exit code 5: без проверки коллекции
Завершить тест
существуетpytest
Во время выполнения тест может быть остановлен при появлении одного или N сообщений об ошибках через управление командами.
pytest -x # stop after first failure
pytest --maxfail=2 # stop after two failures
Указать/выбрать тестовые случаи
pytest
Поддерживает многосторонний запуск и выбор тестовых случаев.
Протестировать указанный файл py:pytest test_mod.py
Проверить указанный каталог:pytest /usr/local/testing/
Укажите тест по идентификатору узла: Каждому собранному тесту будет присвоен уникальный идентификатор узла, который состоит из имени модуля, имени класса, имени функции и т. д., каждая часть использует::
разделены.
运行模块中的指定的测试用例:pytest test_mod.py::test_func
运行类中的某个测试方法:pytest test_mod.py::TestClass::test_method
параметры pytest
-r
Опция может использоваться для отображения более короткой сводной информации о тесте в конце сеанса тестирования, в больших тестовых случаях все сбои, пропуски и т. Д. Информация может быть получена очень четко.-r
Параметры можно комбинировать с другими параметрами, указанными ниже, для вывода различной информации о результатах.
f:失败的
E:错误的
s:跳过的
x:失败的
p:通过的
Чтобы просмотреть только неудачные и пропущенные тесты, вы можете сделать:pytest -rfs
.
Эпилог
Статья была впервые опубликована в публичном аккаунте WeChat.Ченг Юань Сяочжуан, синхронизировано сНаггетс.
Кодировать слова непросто, объясните, пожалуйста, источник перепечатки, а маленькие друзья, которые проходят мимо, протягивают свои милые пальчики и ставят лайк перед уходом (╹▽╹)