我们通过在 python 中实现 unittest 和 pytest 来创建测试。我们想使用夹具在 session 和测试级别进行设置和拆除。
如何使用在设置 session 装置中创建的对象用于设置功能装置。示例我想创建一个驱动程序对象,如 driver = webdriver.Chrome() 初始化浏览器并在测试方法和功能范围夹具中使用驱动程序对象。
conftest.py
导入pytest
@pytest.fixture(scope="session")
def setupsession():
print("Starting Session")
yield
print("Ending Session")
@pytest.fixture(scope="module")
def setupmodule(request):
print("starting module")
yield
print("Ending Module")
@pytest.fixture(scope="class")
def setupclass(request):
print("starting module")
yield
print("Ending Module")
基础测试文件
导入单元测试
class BaseTest(unittest.TestCase):
def setUp(self):
print("inside Base setup")
def tearDown(self):
print("inside base teardown")
测试文件
导入pytest
从 wav2.fixtures.base_test 导入 BaseTest
@pytest.mark.usefixtures("setupsession", "setupmodule")
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")
最佳答案
一个夹具也可以使用其他夹具。这意味着您可以在模块夹具内使用 session 夹具,您可以在类夹具内使用模块夹具等等。您也可以在其他夹具中使用相同的范围夹具。只有 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 夹具,因此不需要使用
setUp
和 tearDown
方法创建 BaseTest。但是,这是您的选择,具体取决于测试用例的结构。测试文件.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
关于installation - 如何共享在夹具中创建的 session 对象,其范围为 pytest/unittest 测试中的 session ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60769509/