You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@pytest.fixture触发AttributeError:module 'pytest'无fixture属性

解决AttributeError: module 'pytest' has no attribute 'fixture'问题

核心原因:脚本命名冲突(最常见)

如果你的测试脚本文件名是pytest.py,Python会优先导入当前目录下的这个文件,而非系统中安装的pytest库。这会导致你调用@pytest.fixture时,实际引用的是自己写的脚本,自然没有fixture属性。

解决方法:

  • 将测试脚本重命名为非pytest.py的名称,比如test_browser_setup.py。

检查虚拟环境有效性

如果你使用了虚拟环境,确认当前激活的环境中确实安装了pytest 7.2.1:

  1. 运行命令验证版本:
pytest --version
  1. 若版本不符或提示找不到pytest,重新在当前环境安装:
pip install pytest==7.2.1

顺带修正代码中的潜在问题

你的代码还有几处逻辑错误,会导致后续运行报错:

  • 开头提前初始化driver = webdriver.Chrome()会在检查环境变量前启动Chrome,完全多余,需删除。
  • Chrome分支中driver = webdriver是把模块对象赋值给driver,而非浏览器实例,应改为driver = webdriver.Chrome()。

修正后的代码:

import pytest
from selenium import webdriver
import os

@pytest.fixture(scope="class")
def init_driver(request):
    supported_browsers = ['chrome', 'firefox']

    browser = os.environ.get('BROWSER')
    if not browser:
        raise Exception("The environment variable 'BROWSER' must be set")
    
    browser = browser.lower()
    if browser not in supported_browsers:
        raise Exception(f"Provided browser '{browser}' is not supported. Supported browsers are: {supported_browsers}")
    
    if browser == 'chrome':
        driver = webdriver.Chrome()
    elif browser == 'firefox':
        driver = webdriver.Firefox()

    request.cls.driver = driver
    yield
    driver.quit()

内容的提问来源于stack exchange,提问作者Wazzuper11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:15:09