I am trying to run only a single test from the unit tests provided in a class. So assuming
class MytestSuite(unittest.TestCase):
def test_false(self):
a = False
self.assertFalse(a, "Its false")
def test_true(self):
a = True
self.assertTrue(a, "Its true")
I would like to run only test_false. Based on the Q&A provided on this site and online, I used the following lines of code in my main class
if __name__ == "__main__": # Indentation was wrong
singletest = unittest.TestSuite()
singletest.addTest(MytestSuite().test_false)
unittest.TextTestRunner().run(singletest)
I keep getting errors while trying to add the test. Mainly:
File "C:\Python27\Lib\unittest\case.py", line 189, in init
(self.class, methodName))
ValueError: no such test method in <class 'main.MytestSuite'>: runTest
Do I need a specific runTest method in my class? Is there a way to run particular tests that may belong to different suites? For example, method A belonging to suite class 1 and method B belonging to suite class 2. Surprisingly this has proven to be a difficult thing to find online. There are multiple examples of doing it through the command line, but not from the program itself.
You're just passing the wrong thing to addTest. Rather than passing in a bound method, you need to pass a new instance of TestCase (in your case, an instance of MyTestSuite), constructed with the name of the single test you want it to run.
singletest.addTest(MyTestSuite('test_false'))
The documentation has a great deal of additional information and examples on this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With