当我运行以下代码时
pytest .\tests\GET\test_setupFunc.py
它工作得很好,即 setup(my_fixture) 函数运行一次然后 test_one 和 test_two
如果我使用pytest-xdist并行运行它
pytest .\tests\GET\test_setupFunc.py -n=2
它失败
我认为 my_fixture 正在被两个测试调用,因为我已经设置了scope="session"
应该共享的函数。
一旦该功能成功运行,我希望并行性应该得到触发
========== 简短的测试摘要信息 =========
错误测试\GET\test_setupFunc.py::test_one - selenium.common.exceptions.WebDriverException:消息:未知错误:无法删除旧的 devtools 端口文件。也许...
如果您打算运行它,请在添加代码步骤中用您的系统用户名替换您的用户名
'''
import pytest
import logging
logging.basicConfig(format='%(message)s')
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
@pytest.fixture(autouse=True, scope='session')
def my_fixture():
logging.warning('setup function')
print(" i will be called only once i am one time")
options = webdriver.ChromeOptions()
options.add_argument('--profile-directory=Default')
options.add_argument("--user-data-dir=c:\\Users\\yourUserName\\AppData\\Local\\Google\\Chrome\\User Data")
driver=webdriver.Chrome(ChromeDriverManager().install(), options=options)
driver.get("https://gmail.com")
driver.quit()
def test_one():
logging.warning('test_a')
print(" i am first function")
def test_two():
logging.warning('test_b')
print(" i am second function")
另请注意,如果我删除selenium
相关步骤并仅保留打印语句,它可以正常工作
预期结果
- setup 方法被调用一次 2 个方法应该被调用一次 setup 成功运行一次
pytest-parallel
不支持 python 3.9 但也尝试过