python - 如何使用 py.test monkeypatch 模拟 os.environ

标签 python unit-testing monkeypatching

我正在尝试模拟 os.environ 但出现此错误。

       monkeypatch.setattr(os, 'environ', mock_env)
E       TypeError: unbound method setattr() must be called with monkeypatch instance as first argument (got module instance instead)

这是我的代码。

 def test_feed(self):
        self.upload_file()
        def mock_env():
            return get_config()

        monkeypatch.setattr(os, 'environ', mock_env)

        response = self.app.get('/feed')

        self.assertEquals('<xml></xml>', response.data)

这是我使用 Flask 测试的方法

@app.route("/feed")
def feed(env=os.environ):
    mrss_feed = FeedBurner(env=env).get_feed()
    response = make_response(mrss_feed)
    response.headers["Content-Type"] = "application/xml"

    return response

最佳答案

我相信你只是忘了将 monkeypatch 夹具作为参数传递给你的测试函数:

def test_feed(self, monkeypatch):
    ...

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

相关文章:

python - numpy.rint 可以返回一个 Int32 吗?

python - 如何使用 Travis-CI 运行 Tox

c# - 犀牛模拟 : AssertWasCalled doesn't work on Stub

python - 如何猴子补丁Django?

python - 出于测试目的重新分配模块的功能

python - 对统计处理的 R2 值使用 'groupby' - python

python - SVM python中predict_proba的提取概率

Python 错误 : subprocess. CalledProcessError:命令返回非零退出状态 1

javascript - Angular 单元测试在指令中初始化 "nameless" Controller

ruby - 在 ruby 中分离出猴子斑 block ?