[PYTHON] Comment créer des exemples de données CSV avec hypothèse

hypothesis est une bibliothèque qui vous permet d'écrire des tests unitaires plus efficacement que des cas de test.

Il semble que vous puissiez essayer une large gamme de valeurs utilisées pour les tests. Cependant, cette fois, j'aimerais voir si des exemples de données peuvent être facilement créés en utilisant la fonction de génération de données d'hypothèse.

Tâche

Je souhaite générer des données dans une plage ou une limite fixe de format de fichier (CSV).

J'essaierai!

Tout d'abord, je veux définir les données. Les données pour lesquelles vous souhaitez créer une hypothèse sont [stratégie](https://hypothesis.readthedocs.io/en/latest/data.html#core -strategies) est utilisé pour la définition.

Cette fois, puisque la bibliothèque standard csv de python est utilisée, si vous créez un dict pour DictWriter, vous pouvez facilement l'écrire, donc lors de la création d'un dict, [fixed_dictionaries](https://hypothesis.readthedocs.io/en/ Il existe une stratégie appelée latest / data.html # hypothesis.strategies.fixed_dictionaries), donc cela semble être possible de cette façon.

Parmi eux, vous pouvez saisir la clé du dict que vous souhaitez créer, décider de la stratégie pour créer la valeur et la définir!

from hypothesis import strategies as st

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

La prochaine chose qui était difficile à comprendre était comment l'utiliser pour générer des données. Il semble qu'il n'y ait pas d'exemple de cette utilisation car il semble être utilisé normalement dans le test unitaire.

Exemple d'utilisation de cas de test:

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

Mais quand je le cherche, il semble que la stratégie a une méthode de ʻexample () `qui peut être utilisée:


import csv
from hypothesis import strategies as st

d = {
    'k_id': st.none(),
    'w_id': st.none(),
    'Objet 1': st.integers(min_value=1, max_value=7),
    'Point 2': st.integers(min_value=1, max_value=5),
    'Point 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)
         

Je n'ai pas eu à écrire le code pour la génération de plage. heureux.

Conclusion

Si vous utilisez .example () de strategy, vous pouvez facilement créer des données CSV ~: tada:

Cet avertissement sera émis, mais il est créé pour le moment car il s'agit de précautions telles que la vitesse de test. Ignorer pour l'instant:

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

Comment créer des exemples de données CSV avec hypothèse
Comment créer rapidement des exemples de données pour un tableau pendant le codage
Comment gérer les données déséquilibrées
Comment augmenter les données avec PyTorch
Comment utiliser la commande CUT (avec exemple)
Comment lire les données de problème avec Paiza
Comment lire un fichier CSV avec Python 2/3
Créer un ensemble de données en échantillonnant au hasard les données MNIST
Comment récupérer des données de courses de chevaux avec Beautiful Soup
Comment stocker des données CSV dans Amazon Kinesis Streams avec une entrée standard
Comment créer des données à mettre dans CNN (Chainer)
J'ai essayé de créer le téléchargement CSV, le traitement des données, la fonction de téléchargement avec Django
Procédure de création d'application multi-plateforme avec kivy
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Comment créer des nombres aléatoires avec le module aléatoire de NumPy
Résumé de la lecture des données numériques avec python [CSV, NetCDF, Fortran binary]
Comment utiliser xgboost: classification multi-classes avec des données d'iris
Comment récupérer des données d'image de Flickr avec Python
Comment créer un sous-menu avec le plug-in [Blender]
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Comment générer un CSV d'en-tête multiligne avec des pandas
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Exemple de données créées avec python
Extraire les données Twitter avec CSV
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment modifier avec SQLAlchemy?
Écrire en csv avec Python
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment gérer les trames de données
Comment supprimer avec SQLAlchemy?
Comment utiliser fixture dans Django pour saisir des exemples de données associés au modèle utilisateur
Comment créer un maillage de flux autour d'un cylindre avec SnappyHexMesh
[Python Kivy] Comment créer un fichier exe avec pyinstaller
Comment créer une trame de données et jouer avec des éléments avec des pandas
[Introduction à Python] Comment obtenir des données avec la fonction listdir
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Comment annuler RT avec Tweepy
[Python] Comment FFT des données mp3
Python: comment utiliser async avec
Comment lire les données de la sous-région e-Stat
[Python] Ecrire dans un fichier csv avec Python
Sortie vers un fichier csv avec Python
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment créer un package Conda
Comment créer un pont virtuel
Comment créer / supprimer des liens symboliques
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment gérer l'erreur DistributionNotFound
Comment démarrer avec Django