[PYTHON] Voir la couverture du flacon avec pytest-cov

introduction

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.

environnement

Contrôle facile de la couverture du ballon

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].

Source à tester

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

Source qui décrit la méthode de test

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

Exécuter un test unitaire

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%.

Comment exécuter avec VS Code

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.

procédure

Procédure de création de définition

  1. Appuyez sur Ctrl + Maj + p pour ouvrir la palette de commandes
  2. Sélectionnez python: Configurer les tests
  3. Sélectionnez pythest
  4. Sélectionnez le répertoire source du test (.Root Directory si le répertoire source du test est root)
  5. Créez `` 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

Procédure d'exécution

  1. Appuyez sur Ctrl + Maj + p pour ouvrir la palette de commandes
  2. python: Run All Tests
  3. python: Show Test Output

Précautions pour VsCode

Il semble que le nom de fichier de la source de test doit commencer par test, tel que testXXXX.

en conclusion

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

Voir la couverture du flacon avec pytest-cov
Vérifiez la couverture de python avec pytest-cov
Restriction IP avec Flask
Bonjour le monde sur flacon
Programmation avec Python Flask
Déployez Flask avec ZEIT maintenant
Touch Flask + courir avec Heroku
Test unitaire du flacon avec pytest
API avec Flask + uWSGI + Nginx
Développement d'applications Web avec Flask
Afficher la communication Python avec Fiddler
Application Web avec Python + Flask ② ③
Téléchargement de fichiers avec Flask + jQuery
Application Web avec Python + Flask ④
[Connexion LINE] Vérifier l'état avec Flask
Lorsqu'une erreur _sqlite3 se produit dans la couverture
Voir les photos prises avec LYTRO ILLUM
Bases de SNS Python faites avec Flask
Afficher les résultats de couverture de pytest de CircleCI
Mesurer la couverture des applications Django avec Coverage.py
[Mémo] Liens lors du développement avec Flask
Créer un serveur Flask avec Docker
Exécutez l'application avec Flask + Heroku
Persistez le serveur d'API Flask avec Forever
Authentification de base, authentification Digest avec Flask
Créer un environnement Flask avec Dockerfile + docker-compose.yml
Création d'un babillard avec flask
Développement d'applications avec Docker + Python + Flask
Fonction de téléchargement d'image avec Vue.js + Flask