【发布时间】:2015-02-12 21:17:39
【问题描述】:
所以几天来我已经尝试为我的 Flask 应用程序编写一些测试,但我无法让它运行。测试通过,但卡在 PASSED。
我已经克隆了 cookiecutter-flask (cookiecutter-flask),它与 pytest 一起运行 webtest(我认为)。我的 conftest.py 看起来和它在 repo 中的一样 (conftest.py)
这些是我目前的测试:
def test_app(testapp):
app = create_app(TestConfig)
res = testapp.get('/')
res.status_code == 200
这一关,它继续。
def test_create_admin_user(db, testapp):
password = bcrypt.generate_password_hash('test')
User.create(
uid='00000000000000000000',
email='john@doe.com',
password=password,
active=1
)
user = User.query.filter_by(email='j@d.com').first()
assert user.email == 'j@d.com'
这是我迷路的地方,测试卡在 PASSED 上并且什么也没做。当我强制中断进程时,我得到这个:
Traceback (most recent call last):
File "manage.py", line 68, in <module>
manager.run()
File "/home/johan/Development/venv_python/local/lib/python2.7/site-packages/flask_script/__init__.py", line 412, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/home/johan/Development/venv_python/local/lib/python2.7/site-packages/flask_script/__init__.py", line 383, in handle
res = handle(*args, **config)
File "/home/johan/Development/venv_python/local/lib/python2.7/site-packages/flask_script/commands.py", line 216, in __call__
return self.run(*args, **kwargs)
File "/home/johan/Development/venv_python/local/lib/python2.7/site-packages/flask/ctx.py", line 386, in __exit__
self.auto_pop(exc_value)
File "/home/johan/Development/venv_python/local/lib/python2.7/site-packages/flask/ctx.py", line 374, in auto_pop
self.pop(exc)
File "/home/johan/Development/venv_python/local/lib/python2.7/site-packages/flask/ctx.py", line 357, in pop
% (rv, self)
AssertionError: Popped wrong request context. (<RequestContext 'http://localhost/' [GET] of backend.app> instead of <RequestContext 'http://localhost/' [GET] of backend.app>)
我在烧瓶中找到了以下关于测试的线程(当然,这是 Flask-Testing 但我认为它有一些相关性,也许它没有:issue)并更改了我的测试配置,因此它包含PRESERVE_CONTEXT_ON_EXCEPTION = False 但它仍然只是挂起。
有人有什么想法我可以试试吗? 我对测试本身不是很熟悉,所以这可能是我做错了。
【问题讨论】:
-
只是查看
cookiecutter-flask的源代码,他们似乎在使用webtest。在第一个测试中,您正在创建一个应用实例但没有使用它,这是有原因的吗?
标签: python testing flask python-unittest webtest