2013-05-12 11 views
0

Как я могу сделать следующий тест для работы?Как я могу исправить функцию, хранящуюся в переменной?

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.

+0

Что вы пытаетесь сделать? * Как я могу сделать следующий код для работы? * Мне недостаточно для понимания (по крайней мере), чтобы понять .. Пожалуйста, укажите, чего вы пытаетесь достичь. – pradyunsg

+0

@Schoolboy реальный код больше и имеет значение ». Я удалил все остальные части кода, которые не имеют прямого отношения к проблеме. Моя проблема: с помощью словаря с несколькими функциями, как я могу их исправить? – borges

+0

@Schoolboy 'patch' decorator из python [mock library] (http://www.voidspace.org.uk/python/mock/). – borges

ответ