Устройство также может использовать другое устройство. Это означает, что вы можете использовать фиксатор сеанса внутри фиксатора модуля, вы можете использовать фиксатор модуля внутри фиксатора класса и так далее. Вы также можете использовать тот же осциллограф в другом приспособлении. Ограничение только на 2 состоит в том, что вы не можете импортировать осветитель в обратном направлении (например, используя осветитель уровня функции в осветителе уровня класса), и не может быть круговой зависимости.
Пожалуйста, найдите тот же самый пример, приведенный в вопросе, с дополнительным приспособлением с scope=function
и использованием приспособления внутри другого приспособления.
conftest.py
import pytest
import unittest
@pytest.fixture(scope="session")
def setupsession(request):
print("Starting Session")
yield "session_obj"
print("Ending Session")
@pytest.fixture(scope="module")
def setupmodule(request, setupsession):
print("starting module")
yield setupsession, "module_obj"
print("Ending Module")
@pytest.fixture(scope="class")
def setupclass(request, setupmodule):
print("starting class")
yield (*setupmodule, "class_obj")
print("Ending class")
@pytest.fixture(scope="function")
def setupmethod(request, setupclass):
print("starting method")
yield (*setupclass, "class_obj")
print("Ending method")
Примечание: Поскольку мы создали приспособление setupmethod, нет необходимости создавать BaseTest с методами setUp
и tearDown
. Но это ваш выбор в зависимости от структуры тестовых случаев.
test_file.py
@pytest.mark.usefixtures("setupmethod")
class TestSample(BaseTest):
def test1(self):
print("calling inside test test1")
self.assertTrue(False)
def test2(self):
print("calling inside test tes`enter code here`t2")
Ссылка: http://devork.be/talks/advanced-fixtures/advfix.html