VS Code not finding pytest tests
Solution 1
If anyone comes across this post-2020, this issue in the vscode-python
repo saved my life. Basically, just do the following:
- Uninstall the
Python
extension - Delete the file that contains the extension from your
~/.vscode
folder (mine looked likems-python.python-[YEAR].[MONTH].[VERSION]
) - Reinstall the extension
Worked like a charm.
Solution 2
In September 2021, I was able to get VS code to find the test directory again by downgrading the VS Code Python extension from version 2021.9.1191016588 to version v2021.8.1159798656. To downgrade, right-click the extension and click "Install another version..."
Solution 3
EDIT: I downgraded to Pytest 4.0.1 after reading issue 3911 and Test Discovery now works.
Me too. When I blow away .pytest_cache
and rerun Python: Discover Unit Tests
, I see that the freshly generated .pytest_cache/v/cache/nodeids
contains all the tests, but I still get the dialog complaining about No tests discovered
.
- Python 3.7.2
- macOS 10.13.6
- VS Code 1.30.2
- Python Extension 2018.12.1
- Pytest 4.1.0
.vscode/settings.json
:
{
"python.linting.enabled": false,
"python.unitTest.unittestEnabled": false,
"python.unitTest.nosetestsEnabled": false,
"python.unitTest.pyTestEnabled": true,
"python.pythonPath": "venv3/bin/python"
}
Tests are in a top-level subdirectory called test
. Running pytest
manually works.
Solution 4
Another thing to check, if vscode fails to discover the tests, is to make sure it doesn't do so because of the coverage module being enabled. In my case the test cases were being discovered correctly but the discovery eventually kept failing due to low test coverage, as described here. So first, make sure that the tests could actually be collected by pytest
as suggested here:
pytest --collect-only
and then make sure you're not forcing coverage check (e.g. in setup.cfg
) with e.g.
addopts= --cov <path> -ra
Solution 5
My Python plugin and Test Explorer works just fine.
In my case naming the class without test_.py
was the issue. In other words, naming the test file without it starting with "test_"
, not "tests_"
, makes it so the explorer does not see the issue. Ex: test_.py
works but tests_.py
, 12345abcde.py
don't work.
Ben
Currently working at MajorBoost Inc. solving healthcare's communications problems one phone call at a time. Formerly: Worked on HoloLens for Microsoft Was the CTO at a location based games company Tech lead and programmer for Ubisoft and Sony Computer Entertainment Dot-bomb survivor and one of the many people who, independently, created something like AJAX but didn't come up with the cool name.
Updated on July 05, 2022Comments
-
Ben almost 2 years
I have PyTest setup in vs-code but none of the tests are being found even though running pytest from the command line works fine.
(I'm developing a Django app on Win10 using MiniConda and a Python 3.6.6 virtual env. VS Code is fully updated and I have the Python and Debugger for Chrome extensions installed)
Pytest.ini:
[pytest] DJANGO_SETTINGS_MODULE = callsign.settings python_files = tests.py test_*.py *_tests.py
vs-code workspace settings:
{ "folders": [ { "path": "." } ], "settings": { "python.pythonPath": "C:\\ProgramData\\Miniconda3\\envs\\callsign\\python.exe", "python.unitTest.unittestEnabled": false, "python.unitTest.nosetestsEnabled": false, "python.unitTest.pyTestEnabled": true, "python.unitTest.pyTestArgs": ["--rootdir=.\\callsign", "--verbose"] } }
Finally, the output from the Python Test Log inside VS code:
============================= test session starts ============================= platform win32 -- Python 3.6.6, pytest-4.1.1, py-1.7.0, pluggy-0.8.1 Django settings: callsign.settings (from ini file) rootdir: c:\Users\benhe\Projects\CallsignCopilot\callsign, inifile: pytest.ini plugins: django-3.4.5 collected 23 items <Package c:\Users\benhe\Projects\CallsignCopilot\callsign\transcription> <Module test_utils.py> <Function test_n_digits> <Function test_n_alpha> <Function test_n_hex> <Function test_n_digits_in_range> <Function test_v1_audiofilename> <Function test_v2_audiofilename> <Function test_v1_bad_int_filename> <Function test_v1_bad_non_int_filename> <Function test_bad_format> <Function test_no_format> <Function test_too_many_segments> <Function test_too_few_segments> <Function test_good_v2_filename> <Function test_bad_year_v2_filename> <Function test_bad_month_v2_filename> <Function test_bad_day_v2_filename> <Function test_bad_date_v2_filename> <Function test_bad_short_serial_v2_filename> <Function test_bad_long_serial_v2_filename> <Function test_good_v3_filename> <Function test_good_lowercase_block_v3_filename> <Function test_bad_non_alpha_block_v3_filename> <Function test_real_filenames> ======================== no tests ran in 1.12 seconds =========================
Am I missing any steps to get vs-code to find the tests?
-
Mike M. almost 5 yearsDo the tests show up in the Test Explorer for you after rerunning Python: Discover Tests? I still don't see anything after downgrading.
-
WiseStrawberry over 4 yearsUpdate for 9th of october: you should be using:
json "python.testing.unittestEnabled": false, "python.testing.nosetestsEnabled": false, "python.testing.pytestEnabled": true,
-
Arcsector almost 4 years@Peter Did you reload the VSCode window after uninstalling/deleting and again after reinstalling?
-
Byron70 over 3 yearsUgh, finally, something that worked. I usually
test_
, but had just fat fingered it. Thanks!!! -
whizzkid over 3 yearsYou sir, saved me lots of hours! Thanks!
-
Vergil over 2 yearsThis worked for me on the latest version of visual studio.
-
MarnixKlooster ReinstateMonica over 2 yearsWorked for me too, was on now-latest v2021.10.1336267007. Thanks! (No idea what the cause is, can't see any error logged anywhere with that newer extension version, just acts as if the project has no tests while
pytest
command line discovers and runs the tests just fine.) -
Sterling over 2 yearsI had a syntax error - "expected indentation" or similar (I had a dangling if
__name__ == "__main__":
statement). The error didn't seem to show up until I ranpytest --collect-only
(though maybe it would have if I just didpytest
instead of clicking on the VS Code buttons). Thank you! -
Person about 2 yearsStill worked for me in 2022!
-
targhs about 2 yearsYes...Worked for me too in 2022