2010-06-12 19 views
7

Używam standardowego modułu logowania python. Kiedy zadzwonię pod numer python manage.py test, chciałbym wyłączyć rejestrowanie zanim wszystkie testy zostaną uruchomione. Czy istnieje sygnał lub jakiś inny rodzaj haka, który mógłbym użyć, aby wywołać funkcję logging.disable? Czy jest jakiś inny sposób wyłączenia rejestrowania po uruchomieniu python manage.py test?Wyłącz rejestrowanie podczas testu manage.py?

Odpowiedz

2

Jedynym sposobem, jaki znam, jest edycja samego siebie ... niezbyt elegancka, ale przynajmniej powinna doprowadzić cię tam, gdzie powinnaś być.

+0

Ach, ja nie pomyślałem, że (... no oczywiście) . Dzięki! –

+0

@Eric, nie ma za co! –

9

Jako łatwy Alternatywnie można wyłączyć rejestrowanie podczas uruchamiania testów w ustawieniach złożyć tak:

if 'test' in sys.argv: 
    logger.removeHandler(handler) 
    logger.setLevel(logging.ERROR) 
+0

Dzięki - działał jak czar! –

4

wolę uruchomić testy z oddzielnym settings_test.py, gdzie mogę usunąć niepotrzebne aplikacje, middleware i innych rzeczy, których nie potrzebuję podczas testów. I mogę wyłączyć wyjście rejestrowania tutaj również w ten sposób:

from settings import * 
import logging 

# direct all logging output to nowhere 
class NullHandler(logging.Handler): 
    def emit(self, record): 
     pass 
logging.getLogger().addHandler(NullHandler()) 
12

Tu jest rzeczywiście dużo lepszy sposób to zrobić, z django-nose jest kwarg:

Wystarczy uruchomić:

./bin/manage.py test --logging-clear-handlers 
+1

./manage.py: błąd: brak takiej opcji: --logging-clear-handlers –

+1

Rzeczywiście, nie podałem, ale potrzebujesz django-nosa do tego: https://github.com/jbalogh/django- nos i https://nose.readthedocs.org/en/latest/usage.html?highlight=#cmdoption--logging-clear-handlers – Rmatt

5

najłatwiej Użyłem:

import logging 

class MyTestClass(TestCase): 
    def setUp(self): 
     logging.disable(logging.CRITICAL) 

ten nie wymaga edycji, łatanie, dodatkowe instalacje, i tak dalej. Wszystkie rejestrowanie jest całkowicie wyłączone.

0

Jeśli używasz django-nose, a następnie można dodać poniższy fragment do pliku settings.py wyłączenia wyjścia logowania podczas uruchamiania ./manage.py test

NOSE_ARGS = [ 
    '--nologcapture' 
] 
Powiązane problemy