Тестирование исходящего HTTP-вызова с сокетами? - PullRequest
0 голосов
/ 26 октября 2011

Я пытаюсь написать модульный тест для обратного вызова webhooks в django. Мое приложение настроено так, что когда я запускаю немного кода, оно отправляет запрос POST на URL-адрес моего выбора - это функциональность, которую я пытаюсь протестировать.

Я бы хотел установить сокет, который прослушивает этот запрос и сообщает, был ли он отправлен или нет. Я полагаю, это выглядит примерно так:

import socket

def webHooksTest(self):
    targetURL = 'http://127.0.0.1:8000'

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind('localhost', 8000)
    s.listen(1)
    s.accept()

    # Code that triggers POST request goes here

    self.assertNotEqual(s.recvd(), None, "WebHooks URL did not receive anything")

Как есть, это вообще не будет работать, потому что программа зависнет в строке s.accept () и никогда не отправит запрос.

Я совершенно новичок в асинхронном программировании и могу воспользоваться некоторыми советами. Из изучения документации по Python я вполне уверен, что один модуль сокета не может сделать это - мне нужна некоторая асинхронная магия.

1 Ответ

1 голос
/ 26 октября 2011

Библиотека сокетов не может сделать это одна.Взгляните на Python Twisted .Это должно помочь вам.Хотя я еще не пробовал это с Джанго.

...