[PYTHON] Je veux un générateur de mox

L'écriture de tests est devenue si fastidieuse ces jours-ci que je me suis demandé si mox pouvait facilement le poignarder.

Tout d'abord, la classe.

mox_generator.py


import mox
class MoxGenerator(object):

    def __init__(self):
        self.mox = mox.Mox()

Je commence encore à écrire, alors j'en ai écrit un pour le moment. Tout va bien, stub qui renvoie True. Sans même considérer les arguments. C'est terrible (transpiration).

python


    def true_stub(self, stub_class, stub_method, num_args):
        self.mox.StubOutWithMock(stub_class, stub_method)
        stubbed = getattr(stub_class, stub_method)
        args = tuple([mox.IgnoreArg() for i in range(num_args)])
        stubbed(*args).AndReturn(True)

Lors de l'appel, cela ressemble à ceci. Ici, MyClass.hoge (x, x, x) doit renvoyer True. Le dernier nombre est le nombre d'arguments à passer à MyClass.hoge.

python


    moxgen= MoxGenerator()
    moxgen.true_stub(MyClass, 'hoge', 3)

Bien sûr, Replay est également gênant, donc le nom est étrange, mais mettez-le dans le générateur!

python


    import contextlib
    @contextlib.contextmanager
    def mox_replay(self):
        self.mox.ReplayAll()
        yield
        self.mox.VerifyAll()

Côté exécution du test.

example_test.py


    with moxgen.mox_replay():
        MyClass.method_which_should_call_hoge()

Je l'ai également téléchargé sur github. https://github.com/norobust/mox_generator Pourquoi n'est-il pas engagé avec mon vrai nom? Comment le changer en nom d'utilisateur?

Recommended Posts

Je veux un générateur de mox
Je veux un générateur mox (2)
Je veux répéter plusieurs fois un générateur Python
Je veux imprimer dans la notation d'inclusion
Je veux créer un environnement Python
J'ai fait un générateur Hanko avec GAN
Je souhaite créer facilement un modèle de bruit
Je veux INSÉRER un DataFrame dans MSSQL
Je veux créer une fenêtre avec Python
Je veux faire un jeu avec Python
Je ne veux pas passer un test de codage
Je souhaite créer un type d'implémentation pouvant être branché
Je veux trouver facilement une délicieuse boutique
Je veux écrire dans un fichier avec Python
Je souhaite télécharger une application Django sur heroku
〇✕ J'ai fait un jeu
J'ai un sqlite3.OperationalError
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Je veux que DQN Puniki frappe un home run
100 coups sur le traitement d'image !! (021-030) Je veux faire une pause ...
Je veux donner un group_id à une trame de données pandas
Je veux générer rapidement UUID (memo memo) ~ Edition Python ~
Je veux faire la transition avec un bouton sur le ballon
Je veux escalader une montagne avec l'apprentissage par renforcement
Je veux écrire en Python! (2) Écrivons un test
Je veux trouver un package populaire sur PyPi
Je veux échantillonner au hasard un fichier avec Python
Je souhaite créer facilement un environnement de développement basé sur un modèle
Je veux travailler avec un robot en python.
Je veux diviser une chaîne de caractères avec hiragana
Je souhaite installer un package de Php Redis
[Python] Je veux faire d'une liste imbriquée un taple
Je souhaite créer manuellement une légende avec matplotlib
Je souhaite envoyer automatiquement un e-mail de création d'entreprise
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux lier une variable locale avec lambda
Je veux créer un éditeur de blog avec l'administrateur de django
Je veux démarrer un environnement Jupyter avec une seule commande
[Python] Je souhaite obtenir un ensemble commun entre numpy
Je veux démarrer beaucoup de processus à partir de python
Je veux faire une macro de clic avec pyautogui (désir)
Je veux générer automatiquement un nom de groupe de metal moderne
Je veux résoudre SUDOKU
Je veux faire une macro de clic avec pyautogui (Outlook)
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
Je veux installer le package de requirements.txt avec poésie
Je souhaite envoyer un message de Python à LINE Bot
J'ai fait un texte Python
J'ai fait un robot discord
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Je veux ajouter un joli complément à input () en python
J'ai fait un générateur de réseau neuronal qui fonctionne sur FPGA
Je veux créer un Dockerfile pour le moment.
Je souhaite enregistrer l'heure d'exécution et conserver un journal.
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Configuration MacBookPro Après tout, je veux faire une installation propre
Qiskit: Je veux créer un circuit qui crée des états arbitraires! !!