这是我的test_server.py文件:
from flask_testing import TestCase
class TestServer(TestCase):
def create_app(self):
import server
app = server.run()
return app
def test_1(self):pass
def test_2(self):pass
server.run通过返回app来做很多事情并结束:
import flask
app = flask.Flask(__name__)
def run():
#many things that don't seem related to the issue
import views
views.run(app=app)
return app
views.run声明了许多@ app.route端点。这是一个小例子:
import flask
def run(app):
@app.route("/", methods=['GET'])
def index():
return flask.render_template('index.html')
如果我评论两个测试中的一个,一切都很顺利。如果我离开他们两个我得到:
AssertionError:视图函数映射正在覆盖现有的端点函数:index
根据我对其工作原理的理解,导致问题是因为views.run被调用两次。但是,我没有看到为什么它与两个调用使用的实例相同的原因。
当“手动”测试时,服务器工作正常,问题只出现在使用单元测试时。上面的代码使用了flask_testing,但我在unittest中遇到了同样的问题。
我做错了什么?