假设我想测试这个功能:
def get_user(user_id, adults_only=False):
pass
未显示实现的地方。
我想使用参数化扩展来测试它,如下所示:
@paramaterized.expand([(True, "none"),(False, "child")])
def test_get_child(self, adults_only, expected):
child = self.child
actual = get_user(child.id, adults_only)
assert expected == actual
但是,我没有测试默认参数。并且必须添加第二个测试来测试这一点:
def test_get_child_default(self):
child = self.child
actual = get_user(child.id)
assert "child" == actual
如果能够将这两个测试合二为一就好了。是否可以使用 python 和unittest框架来做到这一点?
我猜这个额外测试的原因是为了确保默认值不会改变...... 据我所知,没有直接支持这一点,但你可以自己处理。你可以做这样的事情(诚然不是很好):
@paramaterized.expand([(True, "none"), (False, "child"), (None, "child")])
def test_get_child(self, adults_only, expected):
child = self.child
kwargs = {"adults_only": adults_only} if adults_only is not None else {}
actual = get_user(child.id, **kwargs)
assert expected == actual
基本上,您使用哨兵值(无)作为默认参数,并相应地自行构造 kwargs。