我们通过在 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 夹具,因此不需要使用 setUptearDown 方法创建 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/

10-15 20:05