我需要做以下测试:
- 向服务器发送 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
处理程序在倒计时结束之前不会回复。