Slaknation
Slaknation

Reputation: 1926

python: testing specific functions in unit test?

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

Answers (1)

leopold.talirz
leopold.talirz

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

Related Questions