Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在flask中为外部url使用url_返回werkzeug.routing.BuildError_Python_Python 3.x_Flask_Python Unittest - Fatal编程技术网

Python 在flask中为外部url使用url_返回werkzeug.routing.BuildError

Python 在flask中为外部url使用url_返回werkzeug.routing.BuildError,python,python-3.x,flask,python-unittest,Python,Python 3.x,Flask,Python Unittest,我已经编写了一个flask服务器,它在某些情况下会将用户重定向到外部站点。我使用pythonunittestmodule编写了一些单元测试。对于其中一些正在测试重定向部分的人,我得到了werkzeug.routing.BuildError。以下是其中一个测试用例的代码: with app.app_context(), app.test_request_context(): response = self.app.get('/{0}'.format(test_url), follow_re

我已经编写了一个flask服务器,它在某些情况下会将用户重定向到外部站点。我使用python
unittest
module编写了一些单元测试。对于其中一些正在测试重定向部分的人,我得到了
werkzeug.routing.BuildError
。以下是其中一个测试用例的代码:

with app.app_context(), app.test_request_context():
    response = self.app.get('/{0}'.format(test_url), follow_redirects=False)
    self.assertEqual(response.status_code, 302)
    self.assertEqual(response.location, url_for('https://www.linkedin.com/in/zeinab-abbasimazar-0327aa47', _external=True, _scheme='https'))
这是完整的堆栈跟踪:

Ran 1 test in 3.211s

FAILED (errors=1)

Error
Traceback (most recent call last):
  File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
    yield
  File "/usr/lib/python3.6/unittest/case.py", line 605, in run
    testMethod()
  File "/home/zeinab/PycharmProjects/url_shortener/tests.py", line 167, in test_get_long_existing_url
    self.assertEqual(response.location, url_for(long_url, _external=True, _scheme='https'))
  File "/home/zeinab/.local/lib/python3.6/site-packages/flask/helpers.py", line 370, in url_for
    return appctx.app.handle_url_build_error(error, endpoint, values)
  File "/home/zeinab/.local/lib/python3.6/site-packages/flask/app.py", line 2215, in handle_url_build_error
    reraise(exc_type, exc_value, tb)
  File "/home/zeinab/.local/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/zeinab/.local/lib/python3.6/site-packages/flask/helpers.py", line 358, in url_for
    endpoint, values, method=method, force_external=external
  File "/home/zeinab/.local/lib/python3.6/site-packages/werkzeug/routing.py", line 2020, in build
    raise BuildError(endpoint, values, method, self)
werkzeug.routing.BuildError: Could not build url for endpoint 'https://www.linkedin.com/in/zeinab-abbasimazar-0327aa47'. Did you mean 'static' instead?


Assertion failed
设置
方法中,我还有以下几行:

app.config['PREFERRED_URL_SCHEME'] = 'https'
我尝试为方法修补
url\u,如中所述;但这并没有改变我的结果

我还尝试了
\u force\u https
方法,但没有看到任何变化

当我阅读时,我打印了
app.config['wsgi.url\u scheme']
,它是
https


我正在Ubuntu系统上使用Python3.6。有人能帮我修复此错误吗?

直接使用带url的字符串,而不使用
url\u for()


通常
url\u for()
也会创建带有url的字符串,但它只会为代码中的函数名创建字符串-
url\u for(函数名)
-不为url创建字符串。

您是否尝试直接使用带有url的字符串而不使用
url\u for()
?通常
url\u for()
也会创建带有url的字符串。-<代码>self.assertEqual(response.location,'https://www.linkedin.com/in/zeinab-abbasimazar-0327aa47)
furas就是这样。我删除了所有其他配置,它仍然有效。你能给我一个答案吗?
self.assertEqual(response.location, 'https://www.linkedin.com/in/zeinab-abbasimazar-0327aa47')