使用nginx代理进行Tornado运行测试
我使用Tornado并编写了一些测试。一切都很好 然后我使用nginx作为代理:使用nginx代理进行Tornado运行测试,nginx,proxy,lua,tornado,Nginx,Proxy,Lua,Tornado,我使用Tornado并编写了一些测试。一切都很好 然后我使用nginx作为代理: server { listen 80; server_name mine.local; location / { proxy_pass http://localhost:8000; } } 很好用。但是 在测试中,我使用AsyncHTTPTestCase和get\u app方法,该方法返回应用程序 问题是:测试默认127.0.0.1:8000上的“外观”-Tornad
server {
listen 80;
server_name mine.local;
location / {
proxy_pass http://localhost:8000;
}
}
很好用。但是
在测试中,我使用AsyncHTTPTestCase
和get\u app
方法,该方法返回应用程序
问题是:测试默认127.0.0.1:8000上的“外观”-Tornado从端口8000开始,所有self.app.reverse\u url('name')
返回127.0.0.1:8000/path
但是我需要,来自测试的所有请求都要转到nginx(代理):
矿山.本地/路径
在主机中我有:
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