Tornado 运行 使用 nginx 代理测试

Tornado run test with nginx proxy

我使用 Tornado 并编写了一些测试。而且一切都很好。

那我就用nginx做代理了:

server {
    listen 80;
    server_name mine.local;
    location / {

      proxy_pass http://localhost:8000;
    }
}

效果很好。但是.

在测试中我使用 AsyncHTTPTestCaseget_app 方法,其中 returns Application.

问题是:在默认 127.0.0.1:8000 上测试 "looks" - Tornado 在端口 8000 上启动,所有 self.app.reverse_url('name') returns 127.0.0.1:8000/路径.

但我需要,来自测试的所有请求都转到 nginx(代理):

我的local/path

hosts 我有:

mine.local      127.0.0.1

在 nginx 中,我使用了一些 lua-脚本,它们可以完成所有脏活。所以我需要,测试在 mine.local 上发出请求,而不是在默认 127.0.0.1:8000.

上发出请求

如何操作?

谢谢!

def bind_unused_port():
    """Binds a server socket to an available port on localhost.

    Returns a tuple (socket, port).
    """
    [sock] = netutil.bind_sockets(8000, 'localhost', family=socket.AF_INET)
    port = sock.getsockname()[1]
    return sock, port

class MineTestCase(AsyncHTTPTestCase):
    def setUp(self):
        super(AsyncHTTPTestCase, self).setUp()
        sock, port = bind_unused_port()
        self.__port = port

        self.http_client = self.get_http_client()
        self._app = self.get_app()
        self.http_server = self.get_http_server()
        self.http_server.add_sockets([sock])

    def get_url(self, path):
        url = '%s://%s:%s%s' % (self.get_protocol(), 'mine.local',
                                80, path)
        return url