📝

unittest

2022/07/10に公開
公式

https://docs.python.org/ja/3/library/unittest.html

基本形

import unittest
import test_suru_module

class TestClass(unittest.TestCase):
    def setUp(self):
        # 各テスト共通の処理
        self.instance = test_suru_module.a_constructor()

    def test_sono_ichi(self):
        # いろいろなassert
        self.assertEqual(inserted_child_ids, child_id)
        self.assertTrue(instance.is_valid)

    def test_reigai(self):
        # 例外が出ることをテストする
        self.assertRaises(ZeroDivisionError, test_suru_module.wari_zan, (3, 0))
        # これでもOK
        with self.assertRaises(ZeroDivisionError):
            test_suru_module.wari_zan(3, 0)

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

いろいろなassertion

assertTrue(expr, msg=None)
assertFalse(expr, msg=None)

# 等しいかどうか。型ごとに専用Methodが呼び出されています
assertEqual(first, second, msg=None)
assertNotEqual(first, second, msg=None)

# objectが同一かどうか
assertIs(first, second, msg=None)
assertIsNot(first, second, msg=None)

# Noneかどうか
assertIsNone(expr, msg=None)
assertIsNotNone(expr, msg=None)

# 含まれるかどうか
assertIn(member, container, msg=None)
assertNotIn(member, container, msg=None)

# instanceのtypeを確認
assertIsInstance(obj, cls, msg=None)
assertNotIsInstance(obj, cls, msg=None)

# 閾値付きでだいたい等しいか等しくないか。浮動小数点とかに
assertAlmostEqual(first, second, places=7, msg=None, delta=None)
assertNotAlmostEqual(first, second, places=7, msg=None, delta=None)

self.assertIn('py', filename)

# 大小を比較
assertGreater(first, second, msg=None)
assertGreaterEqual(first, second, msg=None)
assertLess(first, second, msg=None)
assertLessEqual(first, second, msg=None)

# regex の検索が text とマッチする (またはマッチしない) ことをテストします。
assertRegex(text, regex, msg=None)
assertNotRegex(text, regex, msg=None)

# 出てくる例外
assertRaises(exception, callable, *args, **kwds)
assertRaises(exception, *, msg=None)
# assertRaises() と同等ですが、例外の文字列表現が regex にマッチすることもテストします。
assertRaisesRegex(exception, regex, callable, *args, **kwds)
assertRaisesRegex(exception, regex, *, msg=None)


assertWarns(warning, callable, *args, **kwds)
assertWarns(warning, *, msg=None)
# assertWarns() と同等ですが、警告メッセージが regex にマッチすることもテストします。 
assertWarnsRegex(warning, regex, callable, *args, **kwds)
assertWarnsRegex(warning, regex, *, msg=None)

assertEqualが呼び出しているMethods

assertDictEqual(a, b)
assertListEqual(first, second, msg=None)
assertTupleEqual(first, second, msg=None)
assertSetEqual(first, second, msg=None)
assertDictEqual(first, second, msg=None)
assertMultiLineEqual(first, second, msg=None) # assertEqual()がstringを比較するときに自動的に使用
assertSequenceEqual(first, second, msg=None, seq_type=None)
GitHubで編集を提案

Discussion