我正在尝试找出如何使用 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。
任何人都可以看到我做错了什么,或者为什么这样做不起作用?谢谢。
答案 0 :(得分:1)
尝试一下:
from YOUR_MODULE import api
def test_assert():
assert True
def test_home_page(client):
response = client.get('/')
assert response.status_code == 200
@pytest.fixture
def client():
client = api.test_client()
return client