2017-02-22 48 views
0
POOL = redis.ConnectionPool(host='localhost', port=6379, db=0) 

app = Flask(__name__) 

@app.route('/get_cohort_curve/', methods=['GET'])``` 
def get_cohort_curve(): 

    curve = str(request.args.get('curve')) 
    cohort = str(request.args.get('cohort')) 

    key = curve+cohort 
    return get_from_redis(key) 

def get_from_redis(key): 
    try: 
     my_server = redis.Redis(connection_pool=POOL) 
     return json.dumps(my_server.get(key)) 
    except Exception, e: 
     logging.error(e) 

app.run() 

Мне нужно написать модульные тесты для этого.Как я могу проверить функции в этом флеш-приложении-писать unittests?

Как проверить маршрут, т. Е. Запрос на получение находится в нужном месте?

Нужно ли создавать и уничтожать экземпляры приложения в тесте для каждой функции?

Нужно ли мне создавать ложное соединение redis?

ответ

1

Если вы заинтересованы в запуске чего-либо в Flask, вы можете создать виртуальную среду и протестировать весь shebang, но, на мой взгляд, это самый жесткий способ сделать это.

Когда я устанавливал свой сайт, устанавливая Redis локально, установка порта, а затем внесение некоторых данных внутри него с помощью соответствующего ключа была необходима. Я сделал все свое развитие в ноутбуках iPython (jupyter), чтобы я мог проверить функции и взаимодействия с Redis перед добавлением смешающего слоя Flask.

Затем вы создали безупречный шаблон, сплошной HTML вокруг него и CSS, чтобы создать сайт. Если он работает без данных в виде html-страницы, то вы переходите к части python в Flask.

Уплотнить каталоги фляз. Убедитесь, что вы размещаете их в виртуальной среде, чтобы вы могли вызывать их из своего браузера, и он будет обрабатывать вашу виртуальную среду как сервер.

Вы создаете свое приложение app.py. Я создал каждую из функций страницы по одному. чтобы убедиться, что он правильно нажал переменные, чтобы опубликовать их на странице и вызвать правильный шаблон. После того, как вы начнете работать правильно, с фотографиями и данными, затем на шаблоне следующей страницы, используя @app.route

Принимайте, если очень медленно, по одному за раз с отладкой, чтобы вы могли видеть, где, когда и как вы идут не так. Вы сможете запустить сайт только с сервером redis и вашей виртуальной средой. Затем вам нужно будет отключить VE для редактирования и перезагрузки для тестирования. Сначала это ужасно, но со временем оно становится ротовым.

EDIT:

Если вы действительно хотите проверить только маршрут, а затем сделать app.py только с @ определения app.route и возвращать только страницы (шаблон, которому вы звоните). Вы можете разбить тестирование на куски как можно меньше, но вы должны быть уверены, что выбранные вами кванты исполняются как сценарий python в исполнении ноутбука или командной строки или как компактный функциональный автономный веб-сайт .... если только вы используете пакет, который я упомянул в комментарии: Flask Unit Testing Applications

И вам нужно создать соединения REAL Redis или вы будете ошибаться.

+0

Он должен иметь модульные тесты для ввода этого кода. Я понимаю, что вы говорите - я тестировал код на ноутбуке Jupyter, используя сервер redis, работающий локально. –

+0

В модульном тестировании встроена функциональность. Вот ссылка на него: http://flask.pocoo.org/docs/0.12/testing/. Но модульное тестирование может быть сделано вручную. Мой процесс выше включает модульное тестирование на каждом этапе. – sconfluentus