对所有单元测试使用一个 ChromeDriverManager 实例是否正确

问题描述 投票:0回答:0

我正在使用

ChromeDriverManager
编写自动化测试。 我试图弄清楚为测试初始化驱动程序的正确方法是什么。

我应该初始化一个应该用于all测试的驱动程序吗?
还是应该为 each 测试初始化驱动程序?

each 测试初始化驱动程序的缺点 - 初始化需要很长时间,如果我只有一个用于所有测试,我会节省很多时间。
拥有 one 驱动程序的缺点是可以保存缓存,我可以运行

driver.delete_all_cookies()
但这就足够了吗?

推荐的用途是什么?

注意:目前测试没有并行运行,所以没有一个驱动程序的问题,如果将来它们并行运行,我可以为每个线程初始化一个驱动程序

选项 1:
each 测试初始化的驱动程序,使用夹具:

import pytest
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


@pytest.fixture(autouse=True)
def setup(request):
    driver = webdriver.Chrome(ChromeDriverManager().install())
    request.cls.driver = driver

    yield
    driver.quit()

选项 2:
一个驱动程序已初始化并用于 all 测试

init_tests.py

myDriver = webdriver.Chrome(ChromeDriverManager().install())

conftest.py

from init_tests import myDriver

@pytest.fixture(autouse=True)
def setup(request):
    request.cls.driver = myDriver

    yield
    myDriver.delete_all_cookies()

选项1和选项2中的测试:

some_test.py

from init_tests import driver

class SomeTest(unittest.TestCase):


    def test_basic(self):
        driver.get('http://localhost:4001/login')
        # some testing

什么是更正确的做法?

python unit-testing selenium-webdriver e2e-testing
© www.soinside.com 2019 - 2024. All rights reserved.