Как проверить, работает ли сервис с использованием pytest - PullRequest
0 голосов
/ 19 июня 2019

У меня есть кусок кода, который я должен протестировать с помощью pytest:

from flask import Flask, render_template
app = Flask(__name__)

# two decorators, same function
@app.route('/')
@app.route('/index.html')
def index():
    return render_template('index.html', the_title='Tiger Home Page')

@app.route('/symbol.html')
def symbol():
    return render_template('symbol.html', the_title='Tiger As Symbol')

@app.route('/myth.html')
def myth():
    return render_template('myth.html', the_title='Tiger in Myth and Legend')

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

Поскольку я раньше не имел дело с pytest, я не знаю, как это сделать.Я искал похожие вопросы, но нигде не нашел намеков.Может ли кто-нибудь привести пример или материалы, как протестировать вышеуказанное приложение?

1 Ответ

0 голосов
/ 19 июня 2019

Здесь много понятий. Но я постараюсь осветить основы. Вам нужно указать, какой тип теста вы хотите сделать. Наиболее распространенными являются:

  • Юнит-тесты
  • Интеграционные тесты
  • Приемочные испытания

Идея модульного теста - проверить поведение определенной функции или метода. Он будет проверять (возвращать фальшивые данные) каждую зависимость этой функции и пытаться изолировать ее, чтобы всякий раз, когда я предоставляю данные X, он всегда возвращал то, что я ожидал.

Интеграционный тест, с другой стороны, проверяет именно то, чего пытаются избежать модульные тесты: интеграцию между функциями, сервисами и т. Д. Это более продвинутая концепция и ее сложнее тестировать.

Наконец, приемочный тест гарантирует, что бизнес-логика работает. Поэтому он попытается что-то сделать с вашим приложением и убедиться, что он делает то, что вы от него хотите.

Существует множество других типов тестов, но они являются наиболее распространенными.

На маршрутах тестирования вы можете проводить как модульные, так и приемочные испытания Я не думаю, что юнит-тест там полезен, потому что логика в функции маршрута всегда очень проста.

Вы можете попробовать следующий фрагмент для запуска приемочного теста на маршруте:

from <your module name> import app

def test():
    app.testing = True
    result = app.post('path_you_want_to_test',
                      data=<data_you_want_to_test>,
                      follow_redirects=True)

При этом вы получите результат этого пост-запроса в переменной result.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...