Dans Dernière fois, j'ai vérifié la couverture d'une fonction simple avec pytest-cov. Vérifions si la couverture peut également être vérifiée avec pytest-cov en flacon.
Pour utiliser pytest-cov, nous avons besoin d'une cible de test et d'une source de test, alors créez-la. Si vous ne comprenez pas, veuillez consulter [Effectuer un test unitaire de flacon avec pytest].
La source à tester change pour vous voir lorsque le message acquis est au revoir et renvoie le message tel qu'il est à d'autres moments.
flask_mod.py
from flask import Flask, jsonify
import datetime
app = Flask(__name__)
@app.route('/greeting/<message>')
def sample(message):
if message == 'bye':
message = 'see you'
return message
J'ai créé deux sources de test avec message bye et d'autres modèles. Si l'en-tête est correct, le b (binaire) de la réponse «vous voyez» n'est pas nécessaire.
pytest_flask_fixture.py
import pytest
from flask_mod import app
@pytest.fixture
def client():
app.config['TESTING'] = True
test_client = app.test_client()
yield test_client
test_client.delete()
def test_greeting_bye(client):
result = client.get('/greeting/bye')
assert b'see you' == result.data
def test_greeting_hello(client):
result = client.get('/greeting/hello')
assert b'hello' == result.data
Maintenant que vous avez la source de la cible de test et de la méthode de test, exécutez-la.
# pytest --cov --cov-branch -v pytest_flask_fixture.py
~~~~ Abréviation ~~~~~
collected 2 items
pytest_flask_fixture.py .. [100%]
----------- coverage: platform win32, python 3.6.5-final-0 -----------
Name Stmts Miss Branch BrPart Cover
---------------------------------------------------------------
flask_mod.py 7 0 2 0 100%
pytest_flask_fixture.py 13 0 0 0 100%
---------------------------------------------------------------
TOTAL 20 0 2 0 100%
====== 2 passed in 0.74s ======
En regardant les résultats, vous pouvez voir que le flacon peut également être testé car la branche de
flax_mod.py` '' qui a écrit le traitement du flacon est 2 et la couverture est de 100%.
Vous pouvez taper pytest avec une commande, mais il existe également une méthode qui peut être exécutée avec VS Code, je vais donc la résumer.
pytest.ini
'' dans le répertoire source du test. (Le nom est fixe) pytest.ini
[pytest]
junit_family = legacy
addopts = -ra -q --cov --cov-branch
Il semble que le nom de fichier de la source de test doit commencer par test, tel que testXXXX.
J'ai pu confirmer que pytest-cov est également possible avec flask. Les services WEB sont sujets à des changements et des corrections drastiques, et il existe des API et des pages WEB pour la cible, de sorte que de mauvaises corrections peuvent affecter d'autres emplacements. Pour cette raison, l'automatisation des tests est améliorée, mais en même temps, si la couverture est vérifiée, je pense que des tests de confirmation d'impact plus précis peuvent être effectués.
Recommended Posts