简单灵活的单元测试参数化。
unittest_expander的Python项目详细描述
^ {EM1}$UnTestExpExpRead
该库与Python2.6、2.7、3.2、3.3和3.4兼容,并且 不依赖于外部包(仅使用python标准 图书馆)。
Author: | Jan Kaliszewski (zuo) |
---|---|
License: | MIT License |
Home Page: | https://github.com/zuo/unittest_expander |
Documentation: | http://unittest-expander.readthedocs.org/ |
安装
安装库的最简单方法是执行(可能在 virtualenv)命令:
pip install unittest_expander
(请注意,这样做需要网络访问;如果不这样做 安装pip工具–请参阅: https://pip.pypa.io/en/latest/installing.html)。
或者,您可以download库源文件,解包 它,cd到解包目录并执行以下命令 命令:
python setup.py install
(您可能需要具有管理员权限和/或网络访问权限, 尤其是在virtualenv中执行它not。
也可以在不安装库的情况下使用库: 代码包含在单个文件(unittest_expander.py)中,您可以 把它复制到你的项目中。
用法示例
考虑下面的aucky测试:
importunittestclassTest(unittest.TestCase):deftest_sum(self):foriterable,expectedin[([],0),([0],0),([3],3),([1,3,1],5),(set([1,3]),4),({1:'a',3:'b'},4),]:self.assertEqual(sum(iterable),expected)
很酷吗?一点也不!让我们改进一下:
importunittestfromunittest_expanderimportexpand,foreach@expandclassTest(unittest.TestCase):@foreach(([],0),([0],0),([3],3),([1,3,1],5),(set([1,3]),4),({1:'a',3:'b'},4),)deftest_sum(self,iterable,expected):self.assertEqual(sum(iterable),expected)
现在您有了6个不同的测试(正确地isolated,并且 总是报告为单独的测试,尽管它们共享相同的测试 测试方法来源。
您可能希望在更详细和更具描述性的情况下执行相同的操作 方式:
importunittestfromunittest_expanderimportexpand,foreach,param@expandclassTest(unittest.TestCase):test_sum_params=[param([],expected=0).label('empty gives 0'),param([0],expected=0),param([3],expected=3),param([1,3,1],expected=5),param(set([1,3]),expected=4),param({1:'a',3:'b'},expected=4).label('even dict is ok'),]@foreach(test_sum_params)deftest_sum(self,iterable,expected):self.assertEqual(sum(iterable),expected)
这只是unittest_expander 提供给你。
您可以从实际的documentation of the module中了解更多信息。