【发布时间】:2013-05-12 03:00:44
【问题描述】:
我怎样才能使以下测试起作用?
mymodule.py
import requests
http_methods = {
"GET": requests.get,
"POST": requests.post,
"PUT": requests.put,
"DELETE": requests.delete
}
def foo(method):
r = http_methods[method]("http://some.thing")
return r.status_code
tests.py
import unittest
from mock import patch
import mymodule
class MyTestCase(unittest.TestCase):
...
@patch("requests.post")
def test_foo(self, post):
post.return_value = 200
self.assertEquals(mymodule.foo("POST"), 200)
当我执行测试时,我得到了一个ConnectionError 异常,因为foo 正在执行真正的requests.post。
【问题讨论】:
-
你想做什么? 我怎样才能使下面的代码工作?对我(至少)理解不够有帮助。请说明您要达到的目标..
-
@Schoolboy 真正的代码更大并且具有“意义”。我删除了与问题没有直接关系的所有其他代码部分。我的问题是:给定一个具有多个功能的字典,我该如何修补它们?
-
@Schoolboy
patchpython 装饰器mock library.
标签: python python-2.7 mocking python-mock python-unittest