2017-12-06 143 views
10

Do tej pory nazywamy py.test przez Jenkins.py.test: Pokaż zmienne lokalne w Jenkins

Jeśli test się nie powiedzie, możemy zobaczyć jak to zwykle StackTrace

Traceback (most recent call last): 
    File "/home/u/src/foo/bar/tests/test_x.py", line 36, in test_schema_migrations 
    errors, out)) 
AssertionError: Unknown output: ["Migrations for 'blue':", ...] 

Byłoby naprawdę wspaniale, gdyby mógł widzę zmienne lokalne, takie jak na stronie django debugowania (patrz https://djangobook.com/wp-content/uploads/figure2_3a.png).

.... Ale powinny być widoczne tylko wtedy, gdy chcę je zobaczyć. Sądzę, że to oznacza, że ​​potrzebuję innego formatu niż tekst. Może HTML?

Czy istnieje sposób, aby to włączyć?

Nigdy nie użyłem narzędzia Sentry. Ale AFAIK może wyświetlać ładne informacje zwrotne za pomocą zmiennych lokalnych.

+0

moidule 'cgitb' może pomóc - wstaw' cgitb.enable (format = 'text', context = 12) 'na górze modułu –

+0

@CharlesPehlivanian tak to może działać. Ale to zwiększyłoby domyślne wrażenie. Chcę czasem zobaczyć zmienne lokalne. Jeśli widzę je zawsze, to codzienna praca staje się nieco trudniejsza ... – guettli

+0

Podobnie jak przy użyciu menu rozwijanego jak na stronie djangobook? Zwykły tekst tego nie zrobi, nie wiem, jaka usługa istnieje ... –

Odpowiedz

7

Zastosowanie -l/--showlocals opcja:

pytest --showlocals # show local variables in tracebacks 
pytest -l   # show local variables (shortcut) 

przykład:

def foo(): 
     a = 1 
>  assert 0 
E  assert 0 

a   = 1 

test_foo.py:8: AssertionError 

zobaczyć more details in the doc.

+0

Chcę czasem zobaczyć zmienne lokalne. Jeśli widzę je zawsze, to codzienna praca staje się nieco trudniejsza ... – guettli

+1

OK, ale mam tę opcję dla wszystkich moich CI, co jest bardzo przydatne. – georgexsh

+0

@guettli, może zostać przechwycony lub nie może być. Jak określiłbyś czasami, nie zmieniając jakiejś konfiguracji przed uruchomieniem testów? –