Tornado使用nginx代理运行测试

我使用Tornado并编写了一些测试。 一切正常。

然后我使用nginx作为代理:

“”” 服务器{ 收听80; server_name mine.local; 定位/{ 代理_pass http://localhost:8000; } } “””

它很好用。 但是。

在测试中,我使用AsyncHTTPTestCaseget_app方法,它返回应用程序

问题是:测试“查看”默认值为127.0.0.1:8000-** Tornado 在端口8000上启动,并且所有self.app.reverse_url('name')返回127.0.0.1:8000 /path**。

但是,我需要测试的所有请求都通过nginx(代理)进行:

mine.local/path

hosts中,我有:

“”” mine.local 127.0.0.1 “””

在nginx中,我使用一些lua脚本来完成所有脏工作。 所以我需要测试在mine.local上进行请求,而不是默认的127.0.0.1:8000。

怎么做?

谢谢!

点赞
用户1751039
用户1751039
定义一个函数绑定一个可用的本地端口并返回端口号和对应的 socket 对象。

返回一个元组 (socket, 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
2015-10-05 13:16:27