2016-05-07 7 views
1

Ich verwende tqdm, um Fortschrittsbalken anzuzeigen, während einige lang laufenden Django-Management-Befehle abgeschlossen sind. Es funktioniert super (so einfach zu bedienen!), Aber ...Stille tqdm Ausgabe während der Ausführung von Tests oder Ausführen des Codes über Cron

Wenn ich Komponententests über meinen Code ausführen, möchte ich die Ausgabe der Fortschrittsbalken stoppen. Und wenn ich diese Befehle im Hintergrund mit Cron oder anderen Mitteln ausführe, möchte ich auch, dass die Fortschrittsbalken nicht in der Ausgabe sind.

Ich kann keine einfache Möglichkeit sehen, diese beiden Dinge zu tun, aber vielleicht habe ich etwas verpasst?

Antwort

0

Es gibt ein disable Argument, das Sie auf True setzen können, um alle tqdm Ausgabe zu stummschalten (und in der Tat wird es die Fortschrittsbalkenberechnungen auch überspringen, nicht nur das Display).

Um es dynamisch zu wechseln, können Sie einfach ein Befehlszeilenargument zu Ihrem Skript hinzufügen, das definiert, ob gesetzt ist oder nicht. Dies sollte sowohl für Komponententests als auch für Cron funktionieren.

0

Verwenden mock.patchtqdm im Code zu ersetzen, die es mit so etwas wie dies unter Verwendung ist:

def notqdm(iterable, *args, **kwargs): 
    """ 
    replacement for tqdm that just passes back the iterable 
    useful to silence `tqdm` in tests 
    """ 
    return iterable 

und im Test:

import mock 

... 

    @mock.patch('tested_code_module.tqdm', notqdm) 
    def test_method(self): 
    ... 
Verwandte Themen