使用套接字测试出站HTTP调用?

时间:2011-10-25 22:05:03

标签: python django sockets asyncsocket webhooks

我正在尝试为django中的webhooks回调编写单元测试。我的应用程序已设置好,当我运行一些代码时,它会向我选择的URL发送一个POST请求 - 这是我正在尝试测试的功能。

我想设置一个侦听此请求的套接字,并告诉我它是否已发送。我想这就是这样的:

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 个答案:

答案 0 :(得分:1)

套接字库不能单独执行此操作。看看python twisted。 这应该对你有帮助。虽然我还没有用django尝试过。