Python Unit Tests

Writing Unit Tests

  • Are run in a seperate file
  • Must import unittest

      import unittest
    
  • Create a testcase class that extends unittest.TestCase

      class MoveTests(unittest.TestCase)
    
  • Test functions must start with the word test
  • Use assert to ensure True

Running unit tests

    python3 -m unittest tests.py

Automatically run tests

    if __name__ == '__main__':
        unittest.main()

Run it with

    python3 tests.py

Assertions

Assertions test a condition in your code that must be met

    self.assertEqual(x, x)
    self.assertNotEqual(x, y)
    self.assertGreater(x, y)
    self.assertLess(x, y)
    self.assertTrue(x)
    self.assertFalse(y)
    self.assertIn(x, [x, y])

setUp()

A function that runs before every test

    def setUp(self):
        ...

Using context to ensure Exception is raised

Use the with keyword

    def test_bad_description(self):
        with self.assertRaises(ValueError):
            dice.Roll('2b6')

There is also assertWarns and assertLogs