Pytest - Conftest.py

Possiamo definire le funzioni del dispositivo in questo file per renderle accessibili su più file di prova.

Crea un nuovo file conftest.py e aggiungi il codice seguente in esso -

import pytest

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

Modifica il file test_div_by_3_6.py per rimuovere la funzione faro -

import pytest

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

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

Crea un nuovo file test_div_by_13.py -

import pytest

def test_divisible_by_13(input_value):
   assert input_value % 13 == 0

Ora abbiamo i file test_div_by_3_6.py e test_div_by_13.py facendo uso del dispositivo definito in conftest.py.

Esegui i test eseguendo il seguente comando:

pytest -k divisible -v

Il comando precedente genererà il seguente risultato:

test_div_by_13.py::test_divisible_by_13 PASSED
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:7: AssertionError
========================== 1 failed, 2 passed, 6 deselected in 0.09 seconds
==========================

I test cercheranno il dispositivo nello stesso file. Poiché il dispositivo non si trova nel file, controllerà il dispositivo nel file conftest.py. Quando lo trova, viene richiamato il metodo fixture e il risultato viene restituito all'argomento di input del test.