1

我需要做以下测试:

  • 向服务器发送 GET 请求(http://remote/...)
  • 等待服务器发送 POST 请求作为响应(http://local/...)
  • 解析 POST 数据并做一些断言

Selenium 不适合这种情况:它不能监听连接,我也可以在没有 Selenium 的情况下发送 GET。

所以,我做了一个单元测试:

class MobiMoneyTestCase(TestCase):
def test_can_send_response(self):
    resp = requests.post('http://url/api/', data={'callback': 'http://localhost:8000'})

    class Handler(SimpleHTTPRequestHandler):
        def do_GET(self):
            assert self.path == '...'

    httpd = SocketServer.ThreadingTCPServer(('localhost', 8000),Handler)

测试必须等待 5 秒等待 POST 请求,如果什么也没发生,则测试失败。如何在测试中合并这些项目?如果我sleep(5)输入test_can...,则httpd处理程序在倒计时结束之前不会回复。

4

1 回答 1

-1

基本上你想超时一个过程,如果它太长?在这种情况下,您应该检查信号模块。

这里有一个简洁的实现(带有装饰器):超时功能,如果完成时间太长

于 2012-11-02T13:13:05.537 回答