当oneTimeSetup方法具有fixture scope =“ session”

问题描述

我已经在页面对象模型中使用unittest和pytest实现了selenium python框架。 我使用oneTimeSetup方法创建了一个conftest.py文件,该文件将初始化webdriver,然后所有我的测试文件都将使用它。以下是我使用的方法。我在下面创建了这样的webdriver工厂

WebDriverFactory.py

from selenium import webdriver
class WebDriverFactory():
    def __init__(self,browser):
        self.browser = browser

    def get_browser_instance(self):
        if self.browser == "FF":
            driver = webdriver.Firefox()

        elif self.browser == "Chrome":
            driver = webdriver.Chrome()

        elif self.browser == "IE":
            driver = webdriver.Ie()

        else:
            driver = webdriver.Chrome()


        baseUrl = "http://live.demoguru99.com/index.PHP/"
        driver.delete_all_cookies()
        driver.maximize_window()
        driver.implicitly_wait(5)
        driver.get(baseUrl)

        return driver

conftest.py

import pytest
from base.WebDriverFactory import WebDriverFactory

def pytest_addoption(parser):
    parser.addoption("--browser")

@pytest.fixture(scope="session")
def browser(request):
    return request.config.getoption("--browser")

@pytest.fixture(scope="session")
def oneTimeSetup(request,browser):
    print("This is one time setup")
    wdf = WebDriverFactory(browser)
    driver = wdf.get_browser_instance()

    if request.cls is not None:
        request.cls.driver = driver

    yield driver
    driver.quit()
  

下面是我的测试文件

from pages.mobile_page.mobile_page import MobilePage
from utilities.mark_test_status import MarkTestStatus
import unittest
import pytest

@pytest.mark.usefixtures("oneTimeSetup")
class TestMobile(unittest.TestCase):

    @pytest.fixture(autouse=True)
    def classObject(self,oneTimeSetup):
        self.mb = MobilePage(self.driver)
        self.ts = MarkTestStatus(self.driver)

    def test_Mobile(self):
        result = self.mb.mobile()
        self.ts.finalMark(testcase="Mobile Sort By test",result=result,resultMessage="Testing Mobile SOrt functionality")

在cmd中运行测试时出现以下错误cmd

如果我在conftest.py中将oneTimeSetup的范围更改为“ class”,则测试运行良好。但是,当我添加更多测试时,我希望在单个webdriver会话中运行所有mt测试。

详细信息: Selenium Python v 3.1.41.0 铬86.0.4240.111 pytest 6.0.1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)