问题
I am trying to add unit tests to my python project and I can't get VS Code to discover my test. The problem is when I try to import the class
that I am testing.
- If I try to
run
the test file, it passes. - If I omit the
from A.myfile import MyFile
the test is discovered.
Question: What am I doing wrong here?
File structure:
root
├── A
│ ├── __init__.py
│ └── myfile.py
└── tests
├── __init__.py
└── A
├── __init__.py
└── test_myfile.py
myfile.py:
class MyFile(object):
def __init__(self):
self.value = 1
test_myfile.py:
import unittest
from A.myfile import MyFile
class Test_MyFile(unittest.TestCase):
def test_my_file(self):
self.assertTrue(True)
if __name__ == "__main__":
unittest.main()
.env:
PYTHONPATH=PATH_TO_ROOT
settings.json:
{
"python.pythonPath": "PATH_TO_PYTHON\python.exe",
"python.testing.unittestArgs": [
"-v",
"-s",
"./tests",
"-p",
"test_*.py",
"-t",
"."
],
"python.envFile": "${workspaceFolder}/.env",
"python.testing.pytestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.unittestEnabled": true
}
Python test log:
start
VSCode version: 1.38.1
Python version: 2.7.14 (x64)
回答1:
It's probably because of the value set for -t
. If unittest
is interpreting that -
to use the default setting then it's using -s
which is the tests
directory, and so your import A
line is importing tests/A/__init__.py
instead of A/__init__.py
which is leading to an ImportError
when A.myfile
can't be found (check the test output to see the failure).
Change that -
to .
and it should hopefully fix things to anchor the top directory for your project.
来源:https://stackoverflow.com/questions/58062521/no-tests-discovered-when-using-vscode-python-and-absolute-imports