Jak mogę uzyskać VS Code, aby umieścić mnie w debugerze w momencie awarii podczas uruchamiania testów z pytest?
Pytest wyłapuje wszystkie błędy i potwierdzenia, a kod VS wywołuje debugger tylko w przypadku nieprzechwyconych błędów (mogę to zmienić na podniesiony wyjątek, ale wtedy zatrzymuje się na wszystkim, co zostało zgłoszone podczas próby).
Próbowałem ustawić --pdbjako pytest argument, ale prowadzi to do błędów:
============================= test session starts =============================
platform win32 -- Python 3.8.1, pytest-5.3.2, py-1.8.1, pluggy-0.13.1
rootdir: c:\Projects\debugtest, inifile: pytest.ini
collected 1 item
test.py F
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> traceback >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Traceback (most recent call last):
File "C:\Projects\debugtest\test.py", line 4, in test_with_assert
assert 42==2.71828
AssertionError: assert 42 == 2.71828
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> entering PDB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> PDB post_mortem (IO-capturing turned off) >>>>>>>>>>>>>>>>>>
> c:\projects\debugtest\test.py(4)test_with_assert()
-> assert 42==2.71828
(Pdb)
PYDEV DEBUGGER WARNING:
sys.settrace() should not be used when the debugger is being used.
This may cause the debugger to stop working correctly.
If this is needed, please check:
http://pydev.blogspot.com/2007/06/why-cant-pydev-debugger-work-with.html
to see how to restore the debug tracing back correctly.
Call Location:
File "C:\Program Files\Python38\lib\bdb.py", line 359, in set_quit
sys.settrace(None)
- generated xml file: C:\Users\tzhgfma1\AppData\Local\Temp\tmp-24044mEWMyB1nPYAu.xml -
!!!!!!!!!!!!!!!!!! _pytest.outcomes.Exit: Quitting debugger !!!!!!!!!!!!!!!!!!!
============================== 1 failed in 0.43s ==============================
Mam bardzo prosty projekt do testowania tego:
.vscode \ settings.json
{
"python.testing.pytestArgs": [
"--pdb"
],
"python.testing.unittestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.pytestEnabled": true,
"git.ignoreLimitWarning": false
}
.vscode \ launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}", "console": "internalConsole", "justMyCode":false }, { "name": "Python: Attach using Process Id", "type": "python", "request": "attach", "processId": "${command:pickProcess}",
"justMyCode": false
},
{
"name": "Debug Tests",
"type": "python",
"request": "test",
"console": "internalConsole",
"justMyCode": false
}
]
}
pytest.ini
[pytest]
python_files = test*.py
python_classes = Test
python_functions = test
addopts = --tb=native
console_output_style = classic
junit_duration_report = call
filterwarnings =
ignore::RuntimeWarning
i test.py:
def test_with_assert():
assert 42==2.71828
Czy --pdbto właściwy sposób? Lub jak wejść do debugera po potwierdzeniu lub błędzie?
Jeśli chcesz wejść do debugowania podczas uruchamiania pytest w VSCode i pozostać w wierszu kodu, możesz kliknąć „ Debug Test” u góry metody po wybraniu testu pytest, jak pokazano na zrzucie ekranu:

Ponadto "python.testing.pytestArgs": [],w .vscode\settings.jsonto ścieżka folderu badanego pliku, na przykład, mój plik testowy jest w Test_ccramach akatalogu.
> "python.testing.pytestArgs": [
> "a/Test_cc"
> ],
Jeśli nie tego chcesz, daj mi znać i opisz szczegóły swoich potrzeb.
Źródła: testy debugowania .
Aktualizacja:
Zwykle, gdy debugujemy test w VSCode, bez ustawiania dla niego punktu przerwania, wyświetli się tylko wynik testu. (sukces lub porażka). Wyświetli tylko istotne informacje testowe w konsoli OUTPUT.
Kiedy używam rozszerzenia ' Python Test Explorer for Visual Studio code', wyświetli informacje o teście debugowania na konsoli, podpowiadając problem.

Ta odpowiedź faktycznie rozwiązuje problem. Chciałbym, żeby istniał prostszy sposób, albo z Visual Studio Code, albo z prostej raiseflagi z pytest.
Jana Duggar otwarcie mówiła o swoich poszukiwaniach miłości. Oto wszystko, co powiedziała na ten temat i jej pięcioletnie okno na małżeństwo.
Gwiazda „Outlandera”, Sam Heughan, niedawno ujawnił, co zabierze z planu, aby upamiętnić Jamiego Frasera, rolę, która uczyniła go gwiazdą.
„She Loves You” została napisana w godzinę, nagrana w jeden dzień i była piosenką The Beatles z jednym z ich najlepszych wykonań w karierze.
Dolly Parton i jej babcia Bessie miały szczególny związek. Babcia Parton była bardzo chora, ale to nie powstrzymało Dolly przed zrobieniem jej psikusa.
Aby zrozumieć myślenie obiektywne i subiektywne, kluczowe jest zrozumienie, co sprawia, że każdy typ rozumowania jest wyjątkowy. Subiektywne informacje opierają się na osobistych opiniach lub odczuciach dotyczących konkretnego tematu. Natomiast obiektywne informacje są faktyczne, oparte na danych i bezstronne.
Kiedy rozmawia się o pogodzie, wilgotność jest stałym tematem rozmów i konsternacji, szczególnie w te parne letnie miesiące. Kiedy ludzie mówią: „Przynajmniej jest sucho”, to jest to po prostu inny sposób powiedzenia: „Uff! Przynajmniej nie jest wilgotno!”
Odkryj Rycerza Mieczy w tarocie – symbolu działania i determinacji. Aby uzyskać wskazówki, zapoznaj się z jego znaczeniami i interpretacjami.
Odkryj głębokie znaczenie liczby 222 aniołów! Odkryj jego duchowe znaczenie i przewodnictwo. Poznaj teraz sekrety numeru 222 aniołów.
W „Children” pojawia się epizod ze znanym nazwiskiem i kilka druzgocących wiadomości
Uważa się, że ten RAV4 jest w doskonałym stanie i jest przygotowany do gry w muzyczne krzesła.
Na nagraniu z drona uchwycono strażaków, którzy najwyraźniej walczyli o ugaszenie pożaru.
Eyes of Wakanda jest bezpośrednio powiązany z MCU, a także aktualizacje X-Men '97, What If..., Daredevil i nie tylko.
„Laguna Beach” opowiadało o życiu licealistów Lauren Conrad, Kristin Cavallari, Stephena Collettiego i innych w połowie lat 2000. Oto, gdzie obecnie znajdują się członkowie obsady reality show MTV.
Ava Gardner była żoną Mickeya Rooneya i Franka Sintry, a także spotykała się z kilkoma innymi gwiazdami Hollywood. Oto spojrzenie wstecz na historię randek Avy Gardner.
John Cleese poślubił swoją żonę Jennifer Wade w 2012 roku. Oto wszystko, co warto wiedzieć o żonie Johna Cleese'a, Jennifer Wade.
Gwiazda „Prawdziwych gospodyń domowych z Atlanty” i jej były mąż, zawodowy zawodnik NFL, po raz pierwszy kupili rozległą rezydencję Alpharetta w 2012 roku.
Uderzyło mnie to nagle, jak to często bywa. Znowu jest w połowie <Nie, nie ten w Pacyfiku, bordowy, ten na karnawale> Każdy nagłówek jest głośny…..
W 2022 roku, wraz z wydaniem GPT-3, umiejętność pisania wydaje się tracić na znaczeniu. Dzięki sztucznej inteligencji osoby o słabym pisaniu mogą również generować wysokiej jakości personel.
W dzisiejszym dynamicznym i konkurencyjnym świecie kariera odgrywa znaczącą rolę w rozwoju osobistym, stabilności finansowej i ogólnej satysfakcji z życia. Jednak wiele osób wpada w nieustający cykl stagnacji i niezadowolenia, stopniowo marnując swoje życie zawodowe.
W zeszłym tygodniu zauważyłem komunikat prasowy, wysłany za pośrednictwem PressGazette (brytyjski serwis informacyjny). W artykule ogłoszono, że Acast, skandynawska firma hostingowa i reklamowa podcastów, będzie przewodzić konsorcjum „prawdopodobnie najbardziej wpływowych” wydawców podcastów.