2018年7月15日日曜日

Python3 で unittest 超入門

概要

unittest は Python3 に標準で搭載されているテストモジュールです
簡単なクラスを作成してテストしてみました

環境

  • macOS 10.13.5
  • Python 3.6.5

テスト対象のコード

  • vim car.py
class Car(object):
    def __init__(self, name , color):
        self.name = name
        self.color = color
        self.dist = 0

    def run(self):
        self.dist += 10

テストコード

  • car_test.py
import unittest
from car import Car


class TestCarClass(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print('setUpClass')

    def setUp(self):
        print('setUp')

    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')

    def tearDown(self):
        print('tearDown')

    def test_run(self):
        c1 = Car('note', 'black')
        c1.run()
        self.assertEqual(c1.dist, 10)

    def test_name(self):
        self.c = Car('fit', 'silver')
        self.assertEqual(self.c.name, 'fit')


if __name__ == '__main__':
    unittest.main()
  • python3 -m unittest test.py

テストを実行するときは -m で unittest を指定します
テストのクラスは unittest.TestCase を継承する必要があります
setUp と tearDown は各テストが実行される前と後で毎回呼ばれます
setUpClass と tearDownClass はこのテストが実行される際に最初と最後で一度だけ呼ばれます

テストには命名規則があり test_xxx という感じで test が先頭に付与される必要があります

他に使える assert は公式のページに記載があります

最後に

他にも minitest や pytest というライブラリがあります
標準の unittest もかなり機能はそろっているので正直これで十分なケースがほとんどかなと思います

0 件のコメント:

コメントを投稿