如何从旧的Python版本中隐藏不兼容的代码?

Sco*_*ths 3 python unit-testing

我正在为一个兼有a *args**kwargs参数的函数编写单元测试.此函数的合理用例是在*argsargment 之后使用关键字参数,即表单

def f(a, *b, **c):
    print a, b, c

f(1, *(2, 3, 4), keyword=13)
Run Code Online (Sandbox Code Playgroud)

现在这只在Python 2.6中变得合法 ; 在早期版本中,上面的行是语法错误,因此甚至不会编译为字节码.

我的问题是: 我如何测试较新的Python版本中提供的功能,并且仍然可以为较旧的Python版本运行测试?

我应该指出,函数本身适用于早期的Python版本,只有一些调用是Python 2.6之前的语法错误.我看过检查Python版本的各种方法不适用于此,因为它没有超过编译阶段.

如果可能的话,我宁愿不必将测试分成多个文件.

Mar*_*wis 11

我认为你不应该测试Python是否正常工作; 相反,专注于测试自己的代码.在这样做时,完全可以以适用于所有Python版本的方式编写特定的调用,即:

f(1, *(2,3,4), **{'keyword':13})
Run Code Online (Sandbox Code Playgroud)