標籤:failed lan generator not ace -- ram 運行 traceback
nose_parameterized使unitTest支援參數化
GIT https://github.com/wolever/nose-parameterized
- And
@parameterized.expand can be used to generate test methods in situations where test generators cannot be used (for example, when the test class is a subclass of unittest.TestCase):
- 使用unittest執行case
#nose_parameterized_demoimport unittest from nose_parameterized import parameterizedclass TestMathUnitTest(unittest.TestCase): @parameterized.expand([ ("1st", 4, 5), ("2en", 2, 4), ("3rd", 3, 4), ]) def test_floor(self, name, source, expected): self.assertEqual(source + 1, expected)
運行結果
D:\workspace\pyUnitTest\src>python -m unittest -v nose_parameterized_demotest_floor_0_1st (nose_parameterized_demo.TestMathUnitTest) ... oktest_floor_1_2en (nose_parameterized_demo.TestMathUnitTest) ... FAILtest_floor_2_3rd (nose_parameterized_demo.TestMathUnitTest) ... ok======================================================================FAIL: test_floor_1_2en (nose_parameterized_demo.TestMathUnitTest)----------------------------------------------------------------------Traceback (most recent call last): File "C:\Python27\lib\site-packages\nose_parameterized-0.5.0-py2.7.egg\nose_parameterized\parameterized.py", line 365, in standalone_func return func(*(a + p.args), **p.kwargs) File "nose_parameterized_demo.py", line 13, in test_floor self.assertEqual(source + 1, expected)AssertionError: 3 != 4----------------------------------------------------------------------Ran 3 tests in 0.029sFAILED (failures=1)D:\workspace\pyUnitTest\src>
#nose_parameterized_demoimport unittest from nose_parameterized import parameterizedclass TestMathUnitTest(unittest.TestCase): params = [ ("1st", 4, 5), ("2en", 2, 4), ("3rd", 3, 4), ] @parameterized.expand(input=params) def test_floor(self, name, source, expected): self.assertEqual(source + 1, expected)
- The
@parameterized decorator can be used test class methods, and standalone functions:
- 使用nosetest執行case
from nose.tools import assert_equalfrom nose_parameterized import parameterizedimport unittestimport math@parameterized([ (2, 2, 4), (2, 3, 8), (1, 9, 1), (0, 9, 0),])def test_pow(base, exponent, expected): assert_equal(math.pow(base, exponent), expected)
執行結果
D:\workspace\pyUnitTest\src> nosetests -v t1.pyt1.test_pow(2, 2, 4) ... okt1.test_pow(2, 3, 8) ... okt1.test_pow(1, 9, 1) ... okt1.test_pow(0, 9, 0) ... ok----------------------------------------------------------------------Ran 4 tests in 0.025sOK
【Python】nose_parameterized使unitTest支援參數化