parameterized
Pythonのユニットテストの補助ライブラリー的なもの。
同じメソッドに対して違う値でテストしたいときに、わざわざ違うテストメソッドを書かなくてすむようにできる。
unittest、pytest、noseなどに対応している。
unittest、pytestで多少書き方が異なる。
自分はunittestしか使ったことないので、unittestのでの使い方。
install
pip install parameterized
usage
テスト対象のコード
ただの足し算。
def add(a, b):
return a + b
テストコード
import unittest
from parameterized import parameterized
class TestAdd1(unittest.TestCase):
@parameterized.expand([
(2, 3, 5),
(1, 1, 2),
(3, -1, 2)
])
def test_add(self, a, b, exp):
self.assertEqual(add(a, b), exp)
a、b、expにそれぞれ、値がわたってくる。
キーワード引数に対応させたい場合は以下。param関数を使う。
import unittest
from parameterized import parameterized, param
class TestAdd2(unittest.TestCase):
@parameterized.expand([
param(2, -2),
param(1, -1),
param(3, -1, exp=2)
])
def test_add(self, a, b, exp=0):
self.assertEqual(add(a, b), exp)