[Pytest] [mock] Anfänger in der Webentwicklung fassten den Unit-Test und den Mock in Python zusammen.

Einführung

Anfänger in der Webentwicklung haben Unit-Tests von pytest und Mock von Django mock queries gelernt, daher werden wir ihn ausgeben.

Was ist ein Unit Test? Was ist Schein?

Ein ** Komponententest ** ist ein Test, der bestätigt, dass ein relativ kleiner Baustein (normalerweise eine Funktion oder Methode) ordnungsgemäß funktioniert. ** mock ** dient zum Festlegen des Werts der Komponente, die zum Testen des Programms auf Pseudo-Weise erforderlich ist.

Die Freude am Unit Test

Wie Sie in kleinen Struktureinheiten lesen und überprüfen können, ** leicht zu identifizierende Fehler **. Da der Testfall als Methode belassen werden kann, kann derselbe Test auch dann ** reproduziert ** werden, wenn sich das Programm ändert.

Die Freude am Spott

Selbst wenn die zum Testen einer bestimmten Klasse X erforderliche Klasse Y unvollständig ist, kann Mock zum Testen der Klasse X verwendet werden. Kurz gesagt, Sie können die Effizienz von ** Unit Test ** erhöhen.

Versuchen Sie es vorerst mit pytest

Erstens ist das Zielprogramm für den Komponententest eine leicht modifizierte Antwort auf das Problem des AtCoder Begginers Contest 141 E Wer sagt ein Wortspiel?. Ich werde.

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

Bereiten Sie als Nächstes ein Programm für den Komponententest vor.

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

Führen Sie pytest aus.

$pytest test_qiita.py

Ausführungsergebnis:

======================================= 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 =================================== 

Er fand die falsche Antwort.

Zusammenfassung

Es erweist sich als sehr nützlich zu sehen, ob die Teilverarbeitung (Funktionen) die erwartete Antwort zurückgibt, insbesondere in großen Programmen. Ich möchte es aktiv für die Funktionsprüfung und das Debuggen während der Entwicklung verwenden.

Recommended Posts

[Pytest] [mock] Anfänger in der Webentwicklung fassten den Unit-Test und den Mock in Python zusammen.
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
Primzahlaufzählung und Primzahlbeurteilung in Python
Janken Poi in Python für Anfänger (Antworten und Erklärungen)
Verzeichnisstruktur für die testgetriebene Entwicklung mit pytest in python
Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Framework-Entwicklung mit Python
Python-Unit-Test-Vorlage
Demonstrieren und beibehalten Sie Python-Webanwendungen mit Systemd-Ubuntage 18.04.3 LTS
Slackbot-Entwicklung in Python
[IPdb] Anfänger in der Webentwicklung haben versucht, das Debuggen mit Python zusammenzufassen
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Generierung von Spezifikationen und Code in der REST-API-Entwicklung (Python Edition)
Algorithmus in Python (Haupturteil)
Testen Sie den Kolben mit einem Pytest
Stapel und Warteschlange in Python
Python-Entwicklung mit Visual Studio 2017
Python-Debug- und Testmodul
Unittest und CI in Python
Python-Entwicklung mit Visual Studio
Stellen Sie den Python-Test in Jenkins ein
Eine Geschichte über alles von der Datenerfassung über die KI-Entwicklung bis hin zur Veröffentlichung von Webanwendungen in Python (3. KI-Entwicklung)
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Pythonweb Scraping-Get-Elemente in loser Schüttung
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Python-Entwicklung unterstützt durch Jenkins-Unit-Test
Zuweisungen und Änderungen in Python-Objekten
[Python] Testbeispiel mit unittest2, mock
Überprüfen und verschieben Sie das Verzeichnis in Python
Unit Test Log Ausgabe mit Python
Schreiben Sie Selentestcode in Python
Hashing von Daten in R und Python
Klicken Sie auf die Web-API in Python
Funktionssynthese und Anwendung in Python
Statistischer Test (Mehrfachtest) in Python: scikit_posthocs
Exportieren und Ausgeben von Dateien in Python
Web Scraping für Anfänger in Python (1)
Führen Sie unittest in Python aus (für Anfänger)
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Webcodierer versucht Excel in Python
Web Scraping für Anfänger in Python (4) -1
Schreiben Sie einen C-Sprach-Unit-Test in Python
Erstellen und lesen Sie Messagepacks in Python
Web-Scraping durch Anfänger mit Python (4) -3 GCE VM-Instanzerstellung und Scraping auf VM
Erleben Sie Teil I "Multinationale Währung" des Buches "Test Driven Development" mit Python
Lassen Sie uns JavaScript wegwerfen und ein Web-Frontend in Python schreiben!