我正在使用
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
什么是更正确的做法?