问题
This is my first few lines of code but I've coded for 20 years so I quickly wanted to get unit testing running.
I am using
- Windows 10
- VS Code 1.30.2 from 7th January, 2019.
- Python 3.7.2
- Python Extension ms-python.python 2018.12.1
Here's the contents of the folder I'm in.
Directory: C:\DATA\Git\Py\my_first_code
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 19/01/2019 21:42 __pycache__
-a---- 19/01/2019 21:35 289 messing.py
-a---- 19/01/2019 21:42 204 test_messing.py
-a---- 19/01/2019 22:07 0 __init__.py
I am not in a "venv", as far as I know.
This is the contents of test_messing.py.
import unittest
class Test_Math(unittest.TestCase):
def math_multiply__when__2_times_2__then__equals_4(self):
self.assertEqual(2 * 2, 4)
if __name__ == '__main__':
unittest.main()
The __init__.py is empty, I added it to see if it helps, and messing.py contains like a 8 lines of some code from a book.
When I try to discover the tests in VS Code I get.
No tests discovered, please check the configuration settings for the tests. Source: Python (Extension)
More interestingly, running test discovery via the Python command line looks like this.
PS C:\DATA\Git\Py\my_first_code> python -m unittest discover -v -s . -p test_*.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
回答1:
As it says in the documentation for the unittest module, Your test method names need to begin with test.
tests are defined with methods whose names start with the letters test. This naming convention informs the test runner about which methods represent tests.
For example
class TestMath(unittest.TestCase):
def test_multiply(self):
self.assertEqual(2 * 2, 4)
def test_multiply_negative(self):
self.assertEqual(-2 * -2, 4)
self.assertEqual(2 * -2, -4)
# etc...
Note that none of these actually test your messing.py functionality. In order to do that you need to import messing, call functions on it, and assert the values those functions return are expected.
Finally, a few conventions you should follow:
- Use short, simple test names
- Avoid using double underscores since those often refer to "magic" variables in Python
- Don't refer to what you're testing in every test since the suite itself already refers to it by name
- Your class names should not contain underscores
来源:https://stackoverflow.com/questions/54271900/why-am-i-getting-no-tests-discovered-with-python-tests-in-vs-code