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

无法设置环境变量:PyCharm中set命令失效致Pytest报错

解决PyCharm终端设置BROWSER环境变量后Pytest仍报错的问题

问题描述

在Pytest中配置了依赖BROWSER环境变量的fixture,在PyCharm终端执行set BROWSER=chrome后运行测试,仍抛出错误:Exception: tHE ENVIRONMENT VARIABLE 'BROWSER' MUST BE SET。

Fixture代码

import pytest
from selenium import webdriver
import os


@pytest.fixture(scope="class")
def init_driver(request):
    pass

    supported_browsers = ['chrome', 'ch' , 'firefox', 'ff']

    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"
                        f"supported_browser are : {supported_browsers}")

    if browser in ('chrome', 'ch'):
     driver = webdriver.Chrome()
    elif browser in ('firefox' , 'ff'):
        driver = webdriver.Firefox()


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

测试代码

import pytest

@pytest.mark.usefixtures("init_driver")
class Testdummy():

    def test_dumb_func(self):
        print(" i am dumb 1")
        print(" i am dumb 2")
        import pdb; pdb.set_trace()

解决方案

1. 保证终端会话的一致性

Windows的cmd终端中,set BROWSER=chrome设置的环境变量仅对当前终端会话有效。如果设置后通过PyCharm图形界面按钮(比如右键测试文件选择Run)启动测试,环境变量不会被继承——因为图形界面启动的进程属于独立会话。

正确操作:在同一个终端会话内,先执行set BROWSER=chrome,紧接着运行测试命令:

pytest test_file.py -v

2. 直接在PyCharm运行配置中设置环境变量

如果习惯用PyCharm图形界面启动测试,可直接在运行配置里配置环境变量:

  • 点击右上角运行按钮旁的下拉菜单,选择Edit Configurations
  • 在打开的窗口中找到你的Pytest运行配置
  • 找到Environment variables栏,点击右侧的齿轮图标进入编辑
  • 添加一行BROWSER=chrome,保存后重新运行测试即可生效

3. 修复Fixture中的小问题

你的fixture代码有两处可优化点:

  • 第一行的pass是多余代码,可删除
  • 异常消息存在语法错误,缺少闭合单引号,修改后更规范

修改后的Fixture代码:

import pytest
from selenium import webdriver
import os


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

    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. "
                        f"Supported browsers are: {supported_browsers}")

    if browser in ('chrome', 'ch'):
        driver = webdriver.Chrome()
    elif browser in ('firefox' , 'ff'):
        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:37:23