Pytest: невозможно заставить приложение Flask вести себя в тесте - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь понять, как использовать 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 для запроса GET на этот URL, он работает правильно,Я вижу текст ответа «Страница индекса».

Затем я установил базовый тестовый сценарий 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.

Кто-нибудь может увидеть, что я сделал неправильно или почему это не сработает?Благодаря.

1 Ответ

0 голосов
/ 08 февраля 2019

попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...