flask+pytestで詰まったところ
こんばんは~ 今日はコードがあるので500文字オーバーしちゃいました~
最近、pythonでflaskやpytestをよく使うようになったのですが、
flaskがらみの部分をpytestで実行したら
エラーになったので備忘録として残します~
↓のようなファイルに対し、
flask_main.py
from flask import Flask, make_response app = Flask(__name__) @app.route('/') def hello_world(): mes = 'Hello, World!' r = make_response(mes) r.headers['Content-Type'] = 'application/json' return r
ちゃんと、「Hello, World!」が返ってくるかなぁというのを確認するために
test_flask.py
from flask_main import hello_world def test_hello(): assert 'Hello, World!' == hello_world()
を作りました。
でも実行すると、
RuntimeError: Working outside of application context.
というエラーが出てしまうんですよね。
どうすればいいかな?と探したところ、
from flask import Flask from flask_main import hello_world app = Flask(__main__) def test_hello(): with app.app_context(): assert b'Hello, World!' == hello_world().data
とやると、このエラーは消えるみたいです~
ただ、返ってくるデータがオブジェクトなので、
.dataで返したり、
バイト文字列で返ってくるのでbを付けたりと
ここまでしてパスしました~
…わざわざbを付けるのはテストとしてどうかな~と思うので、
つけなくても大丈夫な方法を見つけたいです~