gpt4 book ai didi

python - 如何使用 pytest 模拟 os.environ?

转载 作者:行者123 更新时间:2023-12-04 16:45:09 27 4
gpt4 key购买 nike

我需要在使用 pytest 框架编写的单元测试中模拟 os.environ。
这是我要测试的代码的虚拟版本,位于 getters.py :

import os

username = os.environ['MY_USER']
password = os.environ['MY_PASS']

def get_data(...):

access_token = request_access_token(username, password)
...
return data
这是 test_getters.py 中的单元测试示例:
import pytest
import src.getters

class TestGetData(object):


def test_something(self):

data = src.getters.get_data(...)

assert ...
测试收集失败并出现以下错误:
=========================== short test summary info ============================
ERROR tests/test_getters.py - KeyError: 'MY_USER'
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 0.68s ===============================
如果可能的话,我希望能够为整个测试类模拟一次。
我可以使用某种装饰器吗?或者其他一些推荐的模拟 os.environ 的方式?

最佳答案

使用 monkeypatch.setenv()Monkeypatching :
文档:

Modifying environment variables for a test e.g. to test program behavior if an environment variable is missing, or to set multiple values to a known variable. monkeypatch.setenv() and monkeypatch.delenv() can be used for these patches.


代码:
import pytest
import src.getters

class TestGetData(object):


def test_something(self):
monkeypatch.setenv('MY_USER', 'Nanna')
monkeypatch.setenv('MY_PASS', 'P@ssw0rd')
data = src.getters.get_data(...)

assert ...

关于python - 如何使用 pytest 模拟 os.environ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63776083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com