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

Flask+pytest测试中RAVE环境变量未被识别问题求助

排查思路与解决方案

1. 环境变量设置时机滞后

Flutterwave SDK通常会在应用初始化阶段就读取环境变量,如果你的pytest夹具是在测试用例执行时才设置变量,就会导致SDK读取时变量还未生效。

  • 解决:把环境变量设置提前到会话启动阶段,比如在conftest.py中使用pytest_sessionstart钩子:
# conftest.py
import os
import pytest

def pytest_sessionstart(session):
    os.environ['RAVE_SECRET_KEY'] = '你的测试密钥'
    os.environ['RAVE_PUBLIC_KEY'] = '你的测试公钥'

2. Flask配置未正确读取环境变量

如果你的Flask应用是从配置文件(如config.py)加载密钥,而配置逻辑没有从环境变量取值,就会忽略你设置的变量。

  • 排查:检查配置代码是否正确引用环境变量:
# 正确写法
RAVE_SECRET_KEY = os.environ.get('RAVE_SECRET_KEY')
# 错误写法(硬编码或未读取环境变量)
RAVE_SECRET_KEY = '固定密钥'
  • 解决:确保配置文件中通过os.environ读取对应的密钥值。

3. Flutterwave SDK需显式传入密钥

部分Flutterwave Python SDK不会自动读取环境变量,需要在初始化时显式传入密钥参数。

  • 排查:检查你调用API的代码,是否直接使用了无参数初始化:
# 错误示例(依赖自动读取环境变量)
flutterwave = Flutterwave()
# 正确示例(显式传入密钥)
flutterwave = Flutterwave(
    secret_key=os.environ['RAVE_SECRET_KEY'],
    public_key=os.environ['RAVE_PUBLIC_KEY']
)
  • 解决:初始化SDK时直接传入测试密钥,绕过环境变量自动读取逻辑。

4. 环境变量名称拼写错误

确认你设置的变量名和Flutterwave SDK要求的完全一致,部分SDK版本可能使用FLUTTERWAVE_SECRET_KEY而非RAVE_SECRET_KEY。

  • 排查:在测试代码中打印环境变量验证:
import os
print(os.environ.get('RAVE_SECRET_KEY'))  # 查看变量是否存在
print(os.environ.keys())  # 检查所有环境变量名称
  • 解决:修正变量名称为SDK要求的正确值。

5. PyCharm测试配置的环境变量隔离

PyCharm运行测试时可能会使用独立的环境配置,忽略你在夹具中设置的变量。

  • 排查:打开PyCharm的「Run/Debug Configurations」,找到pytest配置,查看「Environment variables」部分是否遗漏了密钥变量。
  • 解决:在测试配置中手动添加RAVE_SECRET_KEY和RAVE_PUBLIC_KEY,或勾选「Include system environment variables」。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:14:59