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

时间:2015-06-17 15:19:50

标签: 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

1 个答案:

答案 0 :(得分:2)

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

def test_feed(self, monkeypatch):
    ...