两者兼而有之
pytest
和
unittest
提供您正在询问的可能性,对于这两种功能,在各自的文档中都用示例进行了说明:查找
fixture
在
pytest公司
文件和
setup
单元测试
文档。
然而,在实践中使用这些特性很快就会失控,并且有创建不可读的测试代码的趋势。它有两种形式,一种是共享fixture设置变得太大(太普遍),这使得读者很难理解与特定测试用例实际相关的内容。第二个原因是,测试代码不再是自包含的,似乎魔法在外面发生了。Meszaros称产生的测试气味为“模糊测试”,上面的场景称为“一般固定装置”和“神秘客人”。
def test_1(self, mock1, mock2, mockn):
default_setup(mock1, mock2, mockn)
# further test code...
def test_2(self, mock1, mock2, mockn):
default_setup(mock1, mock2, mockn)
setup_mock2_to_behave_as_xxx(mock2)
# further test code...
def test_3(self, mock1, mock2, mockn):
setup_mock1_to_always_xxx(mock1)
setup_mock2_to_behave_as_xxx(mock2)
setup_mockn_to_xxx(mockn)
# further test code...