小编Joh*_*zen的帖子

使用py.test进行单元测试时,"RuntimeError:在应用程序上下文之外工作"

我正在尝试迁移到py.test以便于使用和自动发现测试.当我使用unittest运行测试时,测试工作正常.当我在py.test下运行测试时,我得到了RuntimeError: working outside of application context.

这是测试代码(test_app.py):

import unittest

from app import app

class TestAPILocally(unittest.TestCase):
    def setUp(self):
        self.client = app.test_client()

    def testRoot(self):
        retval = self.client.get('/').data
        self.assertTrue('v1' in retval)

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

这是我正在测试的精简文件(app.py):

from flask import Flask
from flask.ext.restful import Api, Resource

class APIListAPI(Resource):
    def get(self):
        return ['v1']

app = Flask(__name__)
api = Api(app)
api.add_resource(APIListAPI, '/')
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这与烧瓶站点上的文档非常相似:测试骨架,实际上,当我使用unittest运行它时,它成功:

$ python tmp1/test_app.py 
.
----------------------------------------------------------------------
Ran 1 test in 0.115s

OK
$ 
Run Code Online (Sandbox Code Playgroud)

但是,当我用py.test测试时,它失败了:

$ ./py.test tmp1/test_app.py
=================== test …
Run Code Online (Sandbox Code Playgroud)

python unit-testing pythonpath pytest flask

5
推荐指数
3
解决办法
2万
查看次数

标签 统计

flask ×1

pytest ×1

python ×1

pythonpath ×1

unit-testing ×1