введение в pytest: pytestЭто очень зрелая и полнофункциональная версия.Pythonтестрамка: 1. Простой и гибкий, простой в использовании. 2. Поддержка параметризации 3. Пропуск тестового примера и xfail, автоматическая повторная попытка сбоя и т. д. 4. Он может поддерживать простое модульное тестирование и сложное функциональное тестирование, а также может использоваться для автоматического тестирования, такого как selenium/appnium, и автоматического тестирования интерфейса (pytest+request). 5.pytest имеет множество сторонних плагинов, которые можно настраивать и расширять. Наиболее полезными являются pytest-. allure (генерация идеального отчета о тестировании в формате HTML), pytest-xdist (многопроцессорное распространение) и т. д. 6. Может быть хорошо интегрирован с Дженкинсом.
Установите pytest: пип install -U pytest Где -U — обновить pytest pytest – версия: Посмотреть номер версии Идентификация и выполнение тестовых случаев: Идентификация: Тестовый файл: 1.test_.py 2.test.py вариант использования Идентификация: 1.Все тесты, включенные в класс Test*.*метод(тест Класс не может иметь__init__метод) 2. Все методы test_* не входят в класс. pytest также может выполнять варианты использования и методы, написанные в рамках unittest. бегать: pytest -v : Может запускать подробную информацию журнала. pytest -s : Вы можете распечатать содержимое тестового примера, используя команду print. pytest filename.py::имякласса : Запустить класс в модуле pytest filename.py::имякласса::имя метода : Запустить метод класса в модуле. pytest -v -k" имя класса and not Имя метода»: пропустить выполнение определенного варианта использования. pytest -m[имя_метки]: @pytest.mark.[имя_метки] запустит тестовые случаи с этой отметкой. pytest -x Имя файла: Остановить работу, как только будет сообщено об ошибке. pytest –maxfail=[num]: прекратить работу, когда ошибка выполнения достигнет числа.
pytest не удалось выполнить повторный запуск: Сценарий: после сбоя теста его необходимо повторить n раз, а между повторами необходимо добавить время задержки с интервалом n секунд. Установка: пип install pytest-rerunfailures осуществлять: 1.pytest – reruns 3 -v -s test_class.py (настроен на повторный запуск n раз) 2.pytest -v – reruns 5 –reruns-delay 1 (установить время задержки) выполнение pytest – выполняется несколько утверждений, даже если они терпят неудачу Сценарий: напишите несколько утверждений в методе. Обычно первое из них не может быть выполнено, поэтому следующие не будут выполнены. Если мы хотим сообщить об ошибке, мы выполним их все. Установка: пип install pytest-assume осуществлять: 1.pytest.assume(1==4)
2.pytest.assume(2==4)
структура фреймворка pytest import pytest Подобно настройке, демонтаж также более гибок. 1. Уровень модуля (setup_module/teardown_module), начало и конец модуля, глобальный (наивысший приоритет). 2. Уровень функции (setup_function/teardown_function) действует только для случаев использования функции (не в классах). 3. Уровень класса (setup_class/teardown_class) запускается только один раз до и после класса (в классе). 4. Уровень метода (setup_method/teardown_method) начинается с начала и конца метода (в классе) 5. Внутри класса (настройка/снятие) выполняется до и после вызова метода.
Использование pytest-fixtrue Сценарий: 1. Вариант использования 1 требует сначала входа в систему. 2. Вариант использования 2 не требует входа в систему. 3. Вариант использования 3 требует входа в систему. Этот сценарий невозможно реализовать с помощью установки и демонтажа. Использование: добавьте @pytest.fixture() перед методом. Когда выполняется вариант использования «Сценарий:тест», некоторые варианты использования требуют входа в систему для выполнения, а некоторые варианты использования не требуют входа в систему. Установка и демонтаж не могут удовлетворить этому требованию. Приспособление может, функция объема по умолчанию шаг: 1.Импортировать Pytest 2. Добавьте @pytest.fixture() перед функцией входа в систему. 3. Введите (имя функции входа) метод тестирования, который будет использоваться, и сначала войдите в систему. 4. Если входные данные не переданы, метод тестирования будет выполнен напрямую без входа в систему. Заявка на конкурс фронтенд-автоматизации Сценарий: Когда вы работаете с другими инженерами по тестированию над совместной разработкой, общедоступные модули должны находиться в разных файлах и в месте, к которому каждый может получить доступ. Решение. Файл conftest.py используется для совместного использования данных, и его можно размещать в разных местах, чтобы играть роль в совместном использовании различных областей. изучить: Когда система выполняет вход по параметру, она сначала ищет в этом файле, есть ли переменная с таким именем, а затем ищет в conftest.py, есть ли она. Шаг: Напишите модуль входа в систему с помощью @pytest.fixture() в conftest.py. Обратите внимание на конфигурацию conftest.py: 1. Имя файла конфигурации изменить нельзя. 2.conftest.py и текущий вариант использования должны находиться в одном пакете, и должен существовать файл __init__. 3. Нет необходимости импортировать файл conftest.py, тестовый пример pytest автоматически найдет его. 4. Глобальную конфигурацию и предварительную работу можно записать здесь и разместить под определенным пакетом, где этот пакет расшарен. Применение в интерфейсной автоматизации-yieid Сценарий: Вы уже можете решить проблемы, которые необходимо выполнить или от которых зависит до тестового метода. Как уничтожить четкие данные после тестового метода? Область действия — уровень модуля. Похоже на: setupClass Решение: добавив ключевое слово yieid в тот же модуль, метод yield возвращает результат в первый раз при его вызове и возвращает результат при выполнении оператора, расположенного ниже,во второй раз. шаг:существовать@pytest.fixture(scope=module) Добавьте yieid в метод входа, а затем добавьте четкие шаги для уничтожения. Обратите внимание, что в этом методе нет возвращаемого значения. Если вы хотите вернуться, используйте addfinalizer. Автоматическое применение светильников Сценарий: Если вы не хотите вносить какие-либо изменения в исходный метод тестирования или если все применяется автоматически, вы можете выбрать автоматическое применение, когда нет исключений и возвращаемое значение не требуется. Решение: используйте параметр autouse=True в приспособлении для достижения шаг: 1. Добавьте @pytest.fixture(autouse=True) в метод. 2. Добавьте @pytest.mark.usefixtures(“start”) в метод тестирования. autouse: метод можно использовать в каждом тестовом примере. Фикстура передается с параметрами Сценарий:тест неотделим от данных. Чтобы обеспечить гибкость, данные обычно передаются через параметры. Решение: приспособление передается через запрос фиксированных параметров. шаг: добавьте @pytest.fixture(params=[1,2,3,’linda’]) в фикстуру и пропишите запрос в параметрах метода
@pytest.mark.skip('Не выполнять этот вариант'): поместите его в метод, чтобы не выполнять этот вариант использования. @pytest.mark.skipif(sys.platform=='darwin',reason='not выполнен в macOS'): укажите причину, по которой этот вариант использования не выполняется, оценивая текущую систему.
import pytest
# имя метода как параметр
test_user_data = ['jerry','Tome']
@pytest.fixture(scope='module')
def login_r(request):
# Это параметр, который принимается и передается
user = request.param
print(f"\n Откройте домашнюю страницу и приготовьтесь войти в систему. Войти пользователь {user}")
return user
@pytest.mark.skip('Не выполнять этот вариант использования теста')
# indirect=True, вы можете выполнить переданные параметры как функцию
@pytest.mark.parametrize("login_r",test_user_data,indirect=True)
def test_case01(login_r):
a = login_r
print(f"Возвращаемое значение имени входа в тестовом варианте использования: {a}")
assert a != ''
if __name__ == '__main__':
pytest.main()
пропустить сценарии использования 1. Вы не хотите запускать этот тестовый пример при отладке. 2. Пометить функции тестирования, которые не могут работать на определенных платформах. 3. В одних версиях выполняется, в других пропускается. 4. Пропустить, когда текущий внешний ресурс недоступен (если тестовые данные получены из базы данных, функция подключения к базе данных пропустит, если возвращаемый результат окажется неудачным, поскольку при выполнении также будет сообщено об ошибке) решать: @pytest.mark.skip(): Чтобы пропустить этот тестовый пример, вы можете добавить условие jumpIf. Вы надеетесь пройти только в том случае, если выполнены определенные условия, иначе тест будет пропущен. Сценарий Xfail 1. Функциональные тесты не были реализованы или не исправлены. Если тест пройден, несмотря на ожидаемый провал (помечен как pytest.mark.xfail), это является xpass и будет указано в сводке теста. 2. Вы хотите, чтобы тест провалился из-за определенного условия. решать: @pytest.mark.xfail Используйте пользовательские маркеры для выполнения только определенных вариантов использования. Сценарий: 1. Выполняйте только определенную часть вариантов использования, соответствующих требованиям. Вы можете разделить веб-проект на несколько модулей, а затем указать имя модуля для выполнения. 2. Если при автоматизации приложения вы хотите, чтобы Android и IOS использовали общий набор кода, вы также можете использовать функцию отметки, чтобы указать, какие варианты использования используются для IOS, а какие — для Android. Просто узнайте имя метки и запустите ее. . решить: добавить @pytest.mark.webtest в метод тестового варианта использования. осуществлять: Параметр 1.-s: вывод информации для печати использованных тестовых примеров. 2.-m: выполнение связанных вариантов использования пользовательских тегов (выполнение с помощью команд). pytest -s test.py -m=search pytest -s test.py -m apptest pytest -s test.py -m ‘not ios’ Многопоточное параллельное и распределенное выполнение Сценарий: существует 1000 вариантов использования теста. Один вариант использования теста занимает одну минуту, а выполнение одного человека занимает 1000 минут. Человеческие затраты обычно обмениваются на затраты времени, если вы добавляете несколько человек для его совместного выполнения. , время будет сокращено. Если 10 человек выполнят его вместе, это займет всего 1000 минут. Это параллельный распределенный сценарий. решить: плагин распределенного выполнения pytest: pytest-xdist, выполнение на нескольких процессорах или хостах Предпосылка: все варианты использования независимы и не имеют последовательности. Они могут выполняться случайным образом и могут выполняться повторно, не затрагивая другие варианты использования. Установка: пип install pytest-xdist Несколько процессоров выполняют вариант использования параллельно, напрямую -n 3 — количество параллелизма: pytest test.py -n 3 Выполнять вместе под несколькими терминалами pytest-html генерирует отчеты о тестировании Установка: пип install pytest-httml Создать отчет о тестировании: pytest -v -s –html=report.html –self-contained-html
Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Этот сайт предоставляет только услуги по хранению информации, не имеет никаких прав собственности и не принимает на себя соответствующие юридические обязательства. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/234993.html Исходная ссылка: https://javaforall.cn