我的测试脚本中包含以下内容:
def setUp(self):
app = create_app()
self.app = app.test_client()
def test_001(self):
with self.app as app:
headers = { 'API-KEY': 'myKey' }
app.get('/endpoint1', follow_redirects=True,headers=headers)
通读我的应用程序中的打印语句,我可以看到我的应用程序端点已被调用,除了请求中缺少标头之外,其他情况看起来都正常。
在我的API中,我有以下打印语句:
log("Headers: " + str(request.headers))
这将在控制台中输出以下消息:
Headers: User-Agent: werkzeug/0.14.1
Host: localhost
Content-Length: 0
因此,显然,客户端确实发送了一些标头,但没有发送我添加的自定义标头。
是否有人看到我在做错什么,导致标头要么不首先发送,要么服务器无法访问?
答案 0 :(得分:0)
def setUp(self):
self.app = create_app()
self.app.config['TESTING'] = True
self.app_context = self.app.app_context()
self.app_context.push()
self.client = self.app.test_client()
def test_001(self):
headers = { 'API-KEY': 'myKey' }
response = self.client.get('/endpoint1', follow_redirects=True, headers=headers)
答案 1 :(得分:0)
对于仍在挣扎的人:
使用follow_redirects=True
会在重定向时以某种方式释放标头。
简单的解决方法是自己进行重定向:
headers = { 'KEY': '123' }
code = 301
url = '/v1/endpoint'
while code == 301:
response = client.get(url, headers=headers)
code = response._status_code
if code == 301: #'Location' is only in header if 301
url = response.headers['Location']