Reputation: 1926
I already know how to test specific classes in python's unittest framework. However, I am having trouble testing specific functions. Here is what I use to select classes that I want to get tested:
if __name__ == '__main__':
test_classes_to_run = [Class1, Class2, Class3]
loader = unittest.TestLoader()
suites_list = []
for test_class in test_classes_to_run:
suite = loader.loadTestsFromTestCase(test_class)
suites_list.append(suite)
big_suite = unittest.TestSuite(suites_list)
runner = unittest.TextTestRunner()
results = runner.run(big_suite)
So I tried selecting a specific function doing:
if __name__ == '__main__':
testing_class = Class1
test_classes_to_run = [Class1.function1]
loader = unittest.TestLoader()
suites_list = []
for test_class in test_classes_to_run:
suite = loader.loadTestsFromTestCase(test_class)
suites_list.append(suite)
big_suite = unittest.TestSuite(suites_list)
runner = unittest.TextTestRunner()
results = runner.run(big_suite)
but I get the following error:
TypeError: issubclass() arg 1 must be a class
Upvotes: 3
Views: 201
Reputation: 700
Just use
unittest.TestLoader.loadTestsFromName('Path.to.Class1.test_function1')
From the documentation of the unittest module:
For example, if you have a module SampleTests containing a TestCase-derived class SampleTestCase with three test methods (test_one(), test_two(), and test_three()), the specifier 'SampleTests.SampleTestCase' would cause this method to return a suite which will run all three test methods. Using the specifier 'SampleTests.SampleTestCase.test_two' would cause it to return a test suite which will run only the test_two() test method. The specifier can refer to modules and packages which have not been imported; they will be imported as a side-effect.
Upvotes: 1