forked from DonJayamanne/pythonVSCode
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Open
Labels
area-testingfeature-requestRequest for new features or functionalityRequest for new features or functionalityneeds PRReady to be worked onReady to be worked on
Description
I have a project with the following structure:
.
├── functions.py
├── __init__.py
└── tests
├── __init__.py
├── test_functions.py
This is the content of test_functions.py:
import unittest
import os.path as path
from functions import sum
current_dir = path.dirname(path.abspath(__file__))
test_file = path.join(current_dir, 'foo.txt')
class TestFunctions(unittest.TestCase):
def test_sum(self):
self.assertEqual(sum(1, 2), 3)
def test_file_exists(self):
self.assertTrue(path.exists(test_file))In order to make the second test succeed I need to run some code before it. I do this by using unittest's load_test protocol. It is implemented in tests/__init__.py:
import os
import unittest
from .test_functions import TestFunctions, test_file
class CustomTestSuite(unittest.TestSuite):
def run(self, result):
with open(test_file, "w") as file:
file.write("")
super().run(result)
os.remove(test_file)
def load_tests(loader, default_tests, pattern):
# top level directory cached on loader instance
test_suite = CustomTestSuite()
tests = loader.loadTestsFromTestCase(TestFunctions)
test_suite.addTests(tests)
return test_suiteIf I run python -m unittest from the root dir, everything works fine:
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OKI could not manage to use my custom test suite within the vs code python extension. If there is currently no solution, I would like to request this feature.
I am aware of other solutions like using setUp per test or module for this simple example. However in my real project the setup involves more complex steps like initializing an email server.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area-testingfeature-requestRequest for new features or functionalityRequest for new features or functionalityneeds PRReady to be worked onReady to be worked on