猿问

Pytest:无法让 Flask 应用程序在测试中运行

我正在尝试研究如何使用pytest来测试最基本的 Flask 应用程序。(我在 Windows 10 上)。这是应用程序代码 myapp.py:


from flask import Flask


api = Flask(__name__)


@api.route('/', methods=['GET'])

def index():

    return 'Index Page'

当我在浏览器中访问http://127.0.0.1:5000/时,或者当我使用 curl 向该 URL 发出 GET 请求时,它工作正常,我看到“索引页面”响应文本。


然后我设置了一个基本的测试脚本,test_app.py:


import pytest

from flask import Flask


def test_assert():

    assert True


def test_home_page(client):

  response = client.get('/')

  assert response.status_code == 200


@pytest.fixture

def client():

  flask_app = Flask(__name__) 

  client = flask_app.test_client()

  return client

我添加了第一个简单的 test_assert() 函数只是为了确保 pytest 正常工作(我是 python 新手)。


现在,当我运行 pytest (>pytest -v) 时,第一个(琐碎的)测试通过,但 test_home_page() 测试失败。该应用程序在通过 pytest 运行时返回状态代码 404。


collected 2 items


test_app.py::test_assert PASSED                                                                                  [ 50%]

test_app.py::test_home_page FAILED                                                                               [100%]


====================================================== FAILURES =======================================================

___________________________________________________ test_home_page ____________________________________________________


client = <FlaskClient <Flask 'test_app'>>


    def test_home_page(client):

      response = client.get('/')

>     assert response.status_code == 200

E     assert 404 == 200

E       -404

E       +200


test_app.py:10: AssertionError

========================================= 1 failed, 1 passed in 0.28 seconds ====

我花了几天时间阅读试图确定为什么 pytest 在这个简单的例子中失败——响应应该是 200,但它一直给出 404。


谁能看到我做错了什么或者为什么这不起作用?谢谢。


慕森王
浏览 158回答 1
1回答

慕容森

尝试这个:from YOUR_MODULE import api&nbsp;def test_assert():&nbsp; &nbsp; assert Truedef test_home_page(client):&nbsp; response = client.get('/')&nbsp; assert response.status_code == 200@pytest.fixturedef client():&nbsp; client = api.test_client()&nbsp; return client
随时随地看视频慕课网APP

相关分类

Python
我要回答