2012-11-30 11 views
25

Gdzie i jak py.test szuka urządzeń? Mam ten sam kod w 2 plikach w tym samym folderze. Gdy usunę conftest.py, cmdopt nie można znaleźć uruchomiony test_conf.py (również w tym samym folderze. Dlaczego sonoftest.py nie szukał?Jak i gdzie py.test odnajduje urządzenia

# content of test_sample.py 
def test_answer(cmdopt): 
    if cmdopt == "type1": 
     print ("first") 
    elif cmdopt == "type2": 
     print ("second") 
    assert 0 # to see what was printed 

treść conftest.py

import pytest 

def pytest_addoption(parser): 
    parser.addoption("--cmdopt", action="store", default="type1", 
     help="my option: type1 or type2") 

@pytest.fixture 
def cmdopt(request): 
    return request.config.getoption("--cmdopt") 

zawartość sonoftest.py

import pytest 

def pytest_addoption(parser): 
    parser.addoption("--cmdopt", action="store", default="type1", 
     help="my option: type1 or type2") 

@pytest.fixture 
def cmdopt(request): 
    return request.config.getoption("--cmdopt") 

Docs powiedzieć

http://pytest.org/latest/fixture.html#fixture-function

  1. Pytest znajduje test_ehlo z powodu prefiksu test_. Funkcja testowa wymaga argumentu funkcji o nazwie smtp. Funkcja dopasowująca jest odkrywana przez szukanie funkcji oznaczonej przez urządzenie o nazwie smtp.
  2. Program smtp() jest wywoływany w celu utworzenia instancji.
  3. Funkcja test_ehlo() jest wywoływana i kończy się niepowodzeniem w ostatnim wierszu funkcji testu.

Odpowiedz

26

py.test będzie importować pliki conftest.py Python i wszystkie, które pasują do wzorca python_files domyślnie test_*.py. Jeśli masz urządzenie testowe, trzeba uwzględnić lub zaimportować go z conftest.py lub z plików testowych, które zależą od niego:

from sonoftest import pytest_addoption, cmdopt 
16

Oto kolejność i gdzie py.test wygląda dla lamp (i testów) (zaczerpnięte z here):

py.test ładunki plugin modułów przy uruchamianiu narzędzi w następujący sposób:

  1. ładując wszystkie wbudowanych wtyczek

  2. ładując wszystkie wtyczki zarejestrowane za pomocą setuptools punktów wejścia.

  3. przez wstępne skanowanie linii poleceń dla opcji -p name i ładowanie określonej wtyczki przed rzeczywistym parsowaniem linii poleceń.

  4. poprzez załadowanie wszystkich plików conftest.py zgodnie z wywołaniem wiersza poleceń (pliki testowe i wszystkie katalogi nadrzędne). Uwaga: pliki conftest.py z podkatalogów domyślnie nie są ładowane przy uruchomieniu narzędzia .

  5. przez rekurencyjnie ładuje wszystkie pluginy określonym przez zmienną pytest_plugins w conftest.py plików

Powiązane problemy