1

当我运行以下代码时

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相关步骤并仅保留打印语句,它可以正常工作

预期结果

  1. setup 方法被调用一次 2 个方法应该被调用一次 setup 成功运行一次

pytest-parallel不支持 python 3.9 但也尝试过

4

0 回答 0