Pytest - Светильники

Приспособления - это функции, которые запускаются перед каждой тестовой функцией, к которой она применяется. Приспособления используются для передачи некоторых данных в тесты, таких как соединения с базой данных, URL-адреса для тестирования и какие-то входные данные. Поэтому вместо того, чтобы запускать один и тот же код для каждого теста, мы можем прикрепить к тестам функцию фиксации, и она будет запускаться и возвращать данные в тест перед выполнением каждого теста.

Функция отмечена как приспособление -

@pytest.fixture

Тестовая функция может использовать прибор, указав имя прибора как входной параметр.

Создать файл test_div_by_3_6.py и добавьте к нему приведенный ниже код

import pytest

@pytest.fixture
def input_value():
   input = 39
   return input

def test_divisible_by_3(input_value):
   assert input_value % 3 == 0

def test_divisible_by_6(input_value):
   assert input_value % 6 == 0

Здесь у нас есть функция фикстуры с именем input_value, который предоставляет входные данные для тестов. Чтобы получить доступ к функции прибора, тесты должны указать имя прибора как входной параметр.

Pytest во время выполнения теста увидит имя прибора как входной параметр. Затем он выполняет функцию фиксации, и возвращаемое значение сохраняется во входном параметре, который может использоваться тестом.

Выполните тест, используя следующую команду -

pytest -k divisible -v

Приведенная выше команда сгенерирует следующий результат -

test_div_by_3_6.py::test_divisible_by_3 PASSED
test_div_by_3_6.py::test_divisible_by_6 FAILED
============================================== FAILURES
==============================================
________________________________________ test_divisible_by_6
_________________________________________
input_value = 39
   def test_divisible_by_6(input_value):
>  assert input_value % 6 == 0
E  assert (39 % 6) == 0
test_div_by_3_6.py:12: AssertionError
========================== 1 failed, 1 passed, 6 deselected in 0.07 seconds
==========================

Однако у этого подхода есть свои ограничения. Функция фиксации, определенная внутри тестового файла, имеет область видимости только в тестовом файле. Мы не можем использовать этот прибор в другом тестовом файле. Чтобы сделать прибор доступным для нескольких тестовых файлов, мы должны определить функцию прибора в файле с именем conftest.py.conftest.py объясняется в следующей главе.