Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Controlling which tests run using pytest

I'm considering converting some unittest.TestCase tests into Pytest ones to take advantage of Pytest's fixtures. One feature of unittest that I wasn't able to easily find the equivalent of in Pytest, however, is the ability to create testing suites and run them. I currently often do something like this:

import unittest

class TestSomething(unittest.TestCase):
    def test_1(self):
        self.assertEqual("hello".upper(), "HELLO")

    def test_2(self):
        self.assertEqual(1+1, 2)

if __name__ == "__main__":
    suite = unittest.TestSuite()
    # suite.addTest(TestSomething('test_1'))
    suite.addTest(TestSomething('test_2'))
    runner = unittest.TextTestRunner()
    runner.run(suite)

By commenting in and out the lines with addTest, I can easily select which tests to run. How would I do something similar with Pytest?

like image 636
Kurt Peek Avatar asked Nov 19 '25 03:11

Kurt Peek


1 Answers

You can use the -k argument to run specific tests. For example

# put this in test.py
import unittest

class TestSomething(unittest.TestCase):
    def test_1(self):
        self.assertEqual("hello".upper(), "HELLO")

    def test_2(self):
        self.assertEqual(1+1, 2)

Running all tests in the class TestSomething can be done like this:

py.test test.py -k TestSomething

Running only test_2:

py.test test.py -k "TestSomething and test_2"

More examples in the documentation

like image 51
mbatchkarov Avatar answered Nov 20 '25 18:11

mbatchkarov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!