[PYTHON] Erstellen von CSV-Beispieldaten mit Hypothese

Hypothese ist eine Bibliothek, mit der Sie Unit-Tests effektiver schreiben können als Testfälle.

Es scheint, dass Sie eine Vielzahl von Werten ausprobieren können, die zum Testen verwendet werden. Dieses Mal möchte ich jedoch sehen, ob Beispieldaten mithilfe der Datengenerierungsfunktion der Hypothese einfach erstellt werden können.

Aufgabe

Ich möchte Daten innerhalb eines festen Bereichs oder einer festen Grenze des Dateiformats (CSV) generieren.

Ich werde es versuchen!

Zunächst möchte ich die Daten definieren. Die Daten, für die Sie Hypothese erstellen möchten, sind [Strategie](https://hypothesis.readthedocs.io/en/latest/data.html#core -strategien) wird zur Definition verwendet.

Da diesmal die Standardbibliothek "csv" von Python verwendet wird, können Sie ein Diktat für DictWriter problemlos exportieren. Wenn Sie also ein Diktat erstellen, feste_Wörterbücher Es gibt eine Strategie namens "latest / data.html # hypothesis.strategies.fixed_dictionaries"), daher scheint dies auf diese Weise möglich zu sein.

Darunter können Sie den Schlüssel des Diktats eingeben, das Sie erstellen möchten, die Strategie zur Wertschöpfung festlegen und definieren!

from hypothesis import strategies as st

DictRowDataModel = st.fixed_dictionaries({
    'k_id': st.none(),
    'w_id': st.none(),
    'Gegenstand 1': st.integers(min_value=1, max_value=7),
    'Punkt 2': st.integers(min_value=1, max_value=5),
    'Punkt 3': st.integers(min_value=1, max_value=16)
})

Das nächste, was schwer zu verstehen war, war, wie man damit Daten generiert. Es scheint, dass es kein Beispiel für diese Verwendung gibt, da sie normalerweise im Komponententest verwendet wird.

Beispiel für die Verwendung eines Testfalls:

from hypothesis import given
import hypothesis.strategies as st

@given(st.integers(), st.integers())
def test_ints_are_commutative(x, y):
    assert x + y == y + x

Aber wenn ich danach suche, scheint es, dass die Strategie eine Methode von "example ()" hat, die verwendet werden kann:


import csv
from hypothesis import strategies as st

d = {
    'k_id': st.none(),
    'w_id': st.none(),
    'Gegenstand 1': st.integers(min_value=1, max_value=7),
    'Punkt 2': st.integers(min_value=1, max_value=5),
    'Punkt 3': st.integers(min_value=1, max_value=16)
}

DictRowDataModel = st.fixed_dictionaries(d)

samples = 3
with open('sample.csv', 'w', encoding='utf8') as out:
    writer = csv.DictWriter(out, fieldnames=tuple(d.keys()))
    for i in range(samples):
        sample = DictRowDataModel.example()
        writer.writerow(sample)
         

Ich musste den Code für die Bereichsgenerierung nicht schreiben. glücklich.

Fazit

Wenn Sie ".example ()" von "Strategie" verwenden, können Sie einfach CSV-Daten erstellen ~: tada:

Diese Warnung wird ausgegeben, wird jedoch vorerst erstellt, da Vorsichtsmaßnahmen wie die Testgeschwindigkeit getroffen werden. Vorerst ignorieren:

NonInteractiveExampleWarning: The `.example()` method is good for exploring strategies, but should only be used interactively.  We recommend using `@given` for tests - it performs better, saves and replays failures to avoid flakiness, and reports minimal examples. (strategy: fixed_dictionaries(...),

Recommended Posts

Erstellen von CSV-Beispieldaten mit Hypothese
So erstellen Sie während des Codierens schnell Beispieldaten für ein Array
Umgang mit unausgeglichenen Daten
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Verwendung des CUT-Befehls (mit Beispiel)
Wie man Problemdaten mit Paiza liest
Lesen einer CSV-Datei mit Python 2/3
Erstellen Sie einen Datensatz, indem Sie zufällig MNIST-Daten auswählen
So kratzen Sie Pferderenndaten mit Beautiful Soup
Speichern von CSV-Daten in Amazon Kinesis Streams mit Standardeingabe
So erstellen Sie Daten für CNN (Chainer)
Ich habe versucht, mit Django eine CSV-Upload-, Datenverarbeitungs- und Download-Funktion zu erstellen
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Wie man Zufallszahlen mit dem Zufallsmodul von NumPy macht
Zusammenfassung zum Lesen numerischer Daten mit Python [CSV, NetCDF, Fortran Binary]
Verwendung von xgboost: Mehrklassenklassifizierung mit Irisdaten
So kratzen Sie Bilddaten von Flickr mit Python
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
So erhalten Sie mit SQLAlchemy + MySQLdb mehr als 1000 Daten
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
So geben Sie die CSV eines mehrzeiligen Headers mit Pandas aus
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Mit Python erstellte Beispieldaten
Extrahieren Sie Twitter-Daten mit CSV
Wie aktualisiere ich mit SQLAlchemy?
Wie man mit Theano besetzt
Wie mit SQLAlchemy ändern?
Schreiben Sie mit Python in csv
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Umgang mit Datenrahmen
Wie lösche ich mit SQLAlchemy?
Verwendung von Fixture in Django zur Eingabe von Beispieldaten für das Benutzermodell
So erstellen Sie mit snappyHexMesh ein Flussnetz um einen Zylinder
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
So erstellen Sie einen Datenrahmen und spielen mit Elementen mit Pandas
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
So brechen Sie RT mit tweepy ab
[Python] Wie man MP3-Daten fFT
Python: So verwenden Sie Async mit
Lesen von e-Stat-Subregionsdaten
[Python] Mit Python in eine CSV-Datei schreiben
Ausgabe in eine CSV-Datei mit Python
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
So erstellen Sie ein Conda-Paket
So erstellen Sie eine virtuelle Brücke
So erstellen / löschen Sie symbolische Links
Wie fange ich mit Scrapy an?
Erste Schritte mit Python
Umgang mit dem DistributionNotFound-Fehler
Wie fange ich mit Django an?