前提・実現したいこと
Flask公式チュートリアルを終えて、「pytest(最初のテスト)」をするところで発生するエラーによってテストが実施できていません。
エラーが出たためチュートリアルからソースコードをすべてコピペしなおしました。
【使用しているバージョン】
Windws
Python 3.9.9
Flask 2.0.2
pytest 6.2.5
発生している問題・エラーメッセージ
cmd
1$pytest #pytest実行 2~~~~~~~~~~~~~~ 3 @pytest.fixture 4 def client(): 5> db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() 6E NameError: name 'flaskr' is not defined 7 8tests\test_flaskr.py:10: NameError 9============================= short test summary info ============================= 10ERROR tests/test_flaskr.py::test_empty_db - NameError: name 'flaskr' is not defined
該当のソースコード
test_flaskr.py
python
11 import os 22 import tempfile 33 44 import pytest 55 from flaskr import create_app 66 77 88 @pytest.fixture0 99 def client(): 1010 db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() 1111 flaskr.app.config['TESTING'] = True 1212 1313 with flaskr.app.test_client() as client: 1414 with flaskr.app.app_context(): 1515 flaskr.init_db() 1616 yield client 1717 1818 os.close(db_fd) 1919 os.unlink(flaskr.app.config['DATABASE']) 2020 2121 def test_empty_db(client): 2222 """Start with a blank database.""" 2323 2424 rv = client.get('/') 2525 assert b'No entries here so far' in rv.data
5行目のfrom flaskr import create_appという記述がうまく動いていないのではと思っています。
(create_appが薄い文字で表示されています)
試したこと
flaskrが定義されていないとエラーが出ているので、
a = create_app()
この記述を追加して実行してみるとAssertionErrorが発生してしまいます。
test_flaskr.py
python
1import os 2import tempfile 3 4import pytest 5 6from flaskr import create_app 7from flaskr.db import init_db 8 9a = create_app() 10 11@pytest.fixture 12def client(): 13 db_fd, a.config['DATABASE'] = tempfile.mkstemp() 14 a.config['TESTING'] = True 15 16 with a.test_client() as client: 17 with a.app_context(): 18 init_db() 19 yield client 20 21 os.close(db_fd) 22 os.unlink(a.config['DATABASE']) 23 24def test_empty_db(client): 25 """Start with a blank database.""" 26 27 rv = client.get('/') 28 assert b'No entries here so far' in rv.data
cmd
1$pytest #pytest実行 2~~~~~~~~~~~~~~ 3client = <FlaskClient <Flask 'flaskr'>> 4 5 def test_empty_db(client): 6 """Start with a blank database.""" 7 8 rv = client.get('/') 9> assert b'No entries here so far' in rv.data 10E assert b'No entries here so far' in b'<!doctype html>\n<title>Posts - Flaskr</title>\n<link rel="stylesheet" href="/static/style.css">\n<nav>\n <h1>Flask...l>\n</nav>\n<section class="content">\n <header>\n \n <h1>Posts</h1>\n \n\n </header>\n \n \n \n\n</section>' 11E + where b'<!doctype html>\n<title>Posts - Flaskr</title>\n<link rel="stylesheet" href="/static/style.css">\n<nav>\n <h1>Flask...l>\n</nav>\n<section class="content">\n <header>\n \n <h1>Posts</h1>\n \n\n </header>\n \n \n \n\n</section>' = <WrapperTestResponse 337 bytes [200 OK]>.data 12 13tests\test_flaskr.py:28: AssertionError 14============================================================= short test summary info ============================================================== 15FAILED tests/test_flaskr.py::test_empty_db - assert b'No entries here so far' in b'<!doctype html>\n<title>Posts - Flaskr</title>\n<link rel="styl...
長々しく書いてしまい申し訳ありません。
a = create_app()
この記述を書いたことでテスト対象まで処理が進んだように見えます。
AssertionErrorということは公式チュートリアルの記述自体が間違っているのでしょうか?
補足情報
python・Flask初学者で分からないところも多くありますが調べながら探り探り学習を進めております。
足りないソース等がありましたらご指摘ください。
ご教示お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/11/29 06:29 編集
2021/11/29 06:35
2021/11/29 06:44
退会済みユーザー
2021/11/29 07:40 編集
2021/11/29 07:46
退会済みユーザー
2021/11/29 08:03