J'ai quelques fonctions comme celui-ci:utilisant wsgiref.simple_server dans unittests
URL = 'http://localhost:8080'
def func():
response = urlopen(URL)
return process(response)
Et je veux le tester avec unittest.
je fait quelque chose comme ceci:
from wsgiref.simple_server import make_server
def app_200_hello(environ,start_response):
stdout = StringIO('Hello world')
start_response("200 OK", [('Content-Type','text/plain')])
return [stdout.getvalue()]
s = make_server('localhost', 8080, app_200_hello)
class TestFunc(unittest.TestCase):
def setUp(self):
s.handle_request()
def test1(self):
r = func()
assert r, something
if __name__ == '__main__':
unittest.main()
A setUp() mes tests arrêter parce que s.handle_request() attend la demande. Comment je peux contourner ça? Lancez s.handle_request() dans un autre thread? ou peut-être il y a une autre solution ?
EDIT: Je veux tester la fonction « FUNC », pas « app_200_hello »
Merci. Cela ressemble à ce que je veux. Mais werkzeug est trop gros. La classe client http://dev.pocoo.org/projects/werkzeug/browser/werkzeug/test.py#L551 est-elle indépendante d'une autre partie du package werkzeug? –
Non, ce n'est pas indépendant, mais ce n'est pas une grosse dépendance pour le développement seulement. En fait, c'est minuscule. –
Oh. Je me suis emmêlé. Je ne veux pas tester app_200_hello. Je veux tester "func" –