【发布时间】:2017-10-13 15:31:39
【问题描述】:
我的主文件中有一个全局对象
# reporter.py
from os import environ
from influxdb import InfluxDBClient
influxdb_client = InfluxDBClient(host=environ['INFLUXCLOUD_HOST'],
username=environ['INFLUXCLOUD_USERNAME'],
password=environ['INFLUXCLOUD_PASSWORD'],
ssl=True,
timeout=4*60)
def foo():
pass
我正在使用 pytest,我想为这些环境变量设置虚假值。我的 conftest.py 中有以下内容:
# conftest.py
import pytest
@pytest.fixture(scope='session', autouse=True)
def setup_env(monkeypatch):
monkeypatch.setenv('INFLUXCLOUD_HOST', 'host')
monkeypatch.setenv('INFLUXCLOUD_USERNAME', 'username')
monkeypatch.setenv('INFLUXCLOUD_PASSWORD', 'password')
但是,当我在我的测试文件中 import reporter 时,我得到一个 KeyError 环境中缺少 INFLUXCLOUD_HOST。
为什么 pytest 不执行setup_env 和monkeypatch 我的环境?有办法吗?
【问题讨论】:
-
能否请您出示您的测试文件以及您的导入报告员如何?