[Pytest] [mock] Les débutants en développement Web ont résumé le test unitaire et simulé en python.

introduction

Les débutants en développement Web ont appris le test unitaire par pytest '' et simulé par Django mock queries '', nous allons donc le générer.

Qu'est-ce qu'un test unitaire? Qu'est-ce que la simulation?

Le ** test unitaire ** est un test qui vérifie que les blocs de construction relativement petits (généralement des fonctions et des méthodes) d'un programme fonctionnent correctement. ** mock ** est de définir la valeur du composant requis pour tester le programme de manière pseudo.

La joie du test unitaire

Comme vous pouvez le lire et le vérifier dans de petites unités structurelles, ** erreurs faciles à identifier **. De plus, comme le cas de test peut être laissé comme méthode, le même test peut être ** reproduit ** même si le programme change.

La joie de se moquer

Même si la classe Y requise pour tester une certaine classe X est incomplète, la simulation peut être utilisée pour tester la classe X. En bref, vous pouvez augmenter l'efficacité du ** test unitaire **.

Essayez d'utiliser pytest pour le moment

Tout d'abord, le programme cible pour le test unitaire est une réponse légèrement différente au problème AtCoder Begginers Contest 141 E Who Says a Pun? Je vais.

qiita.py


def length(n, s):
    res = 0
    i,j = 0, 1
    while j < n:
        if s[i:j] in s[j:]:
            res = max(res, j-i)
            j += 1
        else:
            i += 1
    if i == j:
        i += 1
        j += 2
    return res

Ensuite, préparez un programme pour le test unitaire.

test_qiita.py


from qiita import length

def test_1_ac():
    assert length(5, 'ababa') == 2

def test_1_wa():
    assert length(5, 'ababa') == 0

def test_2_ac():
    assert length(2, 'xy') == 0

def test_2_wa():
    assert length(2, 'xy') == 7

def test_3_ac():
    assert length(13, 'strangeorange') == 5

def test_3_wa():
    assert length(13, 'strangeorange') == 6

Exécutez pytest.

$pytest test_qiita.py

Résultat de l'exécution:

======================================= test session starts =======================================
platform win32 -- Python 3.7.4, pytest-5.2.1, py-1.8.0, pluggy-0.13.0
rootdir: C:/Users/~/qiita
plugins: arraydiff-0.3, cov-2.8.1, doctestplus-0.4.0, openfiles-0.4.0, remotedata-0.3.2
collected 6 items

test_qiita.py .F.F.F                                                                         [100%]

============================================ FAILURES =============================================
____________________________________________ test_1_wa ____________________________________________ 

    def test_1_wa():
>       assert length(5, 'ababa') == 0
E       AssertionError: assert 2 == 0
E        +  where 2 = length(5, 'ababa')

test_qiita.py:7: AssertionError
____________________________________________ test_2_wa ____________________________________________ 

    def test_2_wa():
>       assert length(2, 'xy') == 7
E       AssertionError: assert 0 == 7
E        +  where 0 = length(2, 'xy')

test_qiita.py:13: AssertionError
____________________________________________ test_3_wa ____________________________________________ 

    def test_3_wa():
>       assert length(13, 'strangeorange') == 6
E       AssertionError: assert 5 == 6
E        +  where 5 = length(13, 'strangeorange')

test_qiita.py:19: AssertionError
=================================== 3 failed, 3 passed in 0.11s =================================== 

Il a trouvé la mauvaise réponse.

Résumé

Il s'avère très utile de voir si le traitement partiel (fonctions) renvoie la réponse attendue, en particulier dans les grands programmes. Je souhaite l'utiliser activement pour la vérification des opérations et le débogage pendant le développement.

Recommended Posts

[Pytest] [mock] Les débutants en développement Web ont résumé le test unitaire et simulé en python.
Développement et déploiement de l'API REST en Python à l'aide de Falcon Web Framework
Énumération des nombres premiers et jugement des nombres premiers en Python
Janken Poi en Python pour les débutants (réponses et explications)
Structure de répertoire pour le développement piloté par les tests à l'aide de pytest en python
Écrire du code dans UnitTest une application Web Python
Développement de framework avec Python
modèle de test unitaire python
Démontrer et conserver les applications Web Python avec Systemd-Ubuntage 18.04.3 LTS
Développement Slackbot en Python
[IPdb] Les débutants en développement Web ont tenté de résumer le débogage avec Python
J'ai essayé de programmer le test du chi carré en Python et Java.
[Astuces] Problèmes et solutions dans le développement de python + kivy
Génération de spécifications et génération de code dans le développement d'API REST (édition Python)
Algorithme en Python (jugement premier)
Test unitaire du flacon avec pytest
Pile et file d'attente en Python
Développement Python avec Visual Studio 2017
Module de débogage et de test Python
Unittest et CI en Python
Développement Python avec Visual Studio
Définir le test python dans jenkins
Une histoire sur tout, de la collecte de données au développement d'IA et à la publication d'applications Web en Python (3. développement d'IA)
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
pythonweb scraping-get éléments en vrac
Différence entre list () et [] en Python
Différence entre == et est en python
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Développement Python aidé par le test Jenkins-Unit
Affectations et modifications des objets Python
[Python] Exemple de test avec unittest2, simulé
Vérifiez et déplacez le répertoire en Python
Sortie du journal de test unitaire avec python
Ecrire le code de test du sélénium en python
Hashing de données en R et Python
Accédez à l'API Web en Python
Synthèse de fonctions et application en Python
Test statistique (test multiple) en Python: scikit_posthocs
Exporter et exporter des fichiers en Python
Web scraping pour les débutants en Python (1)
Exécutez unittest en Python (pour les débutants)
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
le codeur Web a essayé d'exceller en Python
Web scraping pour les débutants en Python (4) -1
Ecrire un test unitaire de langage C en Python
Créer et lire des paquets de messages en Python
Web scraping par les débutants avec Python (4) -3 Création d'instances de VM GCE et scraping sur VM
Découvrez la partie I «Monnaie multinationale» du livre «Test Driven Development» avec Python
Jetons JavaScript et écrivons un front-end Web en Python!