如何使用pytest模拟os.environ?

娜娜:

我需要在使用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的其他推荐方法?

亚维夫·亚尼夫(Aviv Yaniv):

使用monkeypatch.setenv()的Monkeypatching

文件:

修改测试的环境变量,例如在缺少环境变量的情况下测试程序的行为,或为已知变量设置多个值。monkeypatch.setenv()和monkeypatch.delenv()可以用于这些补丁。

码:

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 ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章