Ada*_*tan 13 arguments test-suite python-2.7 python-unittest
我想迭代一个项目列表,并对每个项目运行一个断言.一个例子可能是检查列表中的每个数字是否为奇数.
TestCase:
class TestOdd(unittest.TestCase):
def runTest(self):
"""Assert that the item is odd"""
self.assertTrue( NUMBER %2==1, "Number should be odd")
Run Code Online (Sandbox Code Playgroud)
测试suite:
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestOdd())
# I would like to have:
# suite.addTest(TestOdd(1))
# suite.addTest(TestOdd(2))
# suite.addTest(TestOdd(3))
# ...
unittest.main()
Run Code Online (Sandbox Code Playgroud)
如何TestOdd使用参数实例化对象 - 例如,要测试的数字?
更新:根据2011年的博客文章(发布为答案),没有内置的参数化测试机制.我很乐意接受任何更清洁的解决方案.
Ada*_*tan 11
根据" Python单元测试:参数化测试用例 ",发表在Eli Bendersky的博客中:
Python的标准unittest库很棒,我一直都在使用它.然而,缺少的一件事是运行参数化测试用例的简单方法.换句话说,你不能轻易地从外部将参数传递给unittest.TestCase.
Eli的解决方案继承unittest.TestCase于ParametrizedTestCase.我不确定版权问题,所以我不会在这里复制粘贴代码.
如果有更好的解决方案,我将很乐意接受它.
使用类属性可以实现相同.
class TestOdd1(unittest.TestCase):
NUMBER=1
def runTest(self):
"""Assert that the item is odd"""
self.assertTrue( self.NUMBER % 2 == 1, "Number should be odd")
class TestOdd2(TestOdd1):
NUMBER=2
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
单元测试会自动发现它们,因此无需创建套件.
如果要避免将TestCase用于基类,可以使用多重继承:
from unittest import TestCase, main
class TestOdd:
def runTest(self):
"""Assert that the item is odd"""
self.assertTrue( self.NUMBER % 2 == 1, "Number should be odd")
class TestOdd1(TestOdd, TestCase):
NUMBER=1
class TestOdd2(TestOdd, TestCase):
NUMBER=2
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7986 次 |
| 最近记录: |