我需要在使用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的推荐方式?
发布于 2020-09-07 10:54:31
使用monkeypatch.setenv() of 猴击
医生:
修改用于测试的环境变量,例如,在缺少环境变量时测试程序行为,或者将多个值设置为已知变量。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 ...https://stackoverflow.com/questions/63776083
复制相似问题