我在写单元测试是需要双方的*args
和**kwargs
参数的函数。一个合理的用例在该函数中的*args
argment后使用关键字参数,即形式如何从旧Python版本隐藏不兼容的代码?
def f(a, *b, **c):
print a, b, c
f(1, *(2, 3, 4), keyword=13)
现在这仅became legal in Python 2.6的;在早期版本中,上面的行是语法错误,因此甚至不会编译为字节码。
我的问题是:如何测试在新的Python版本所提供的功能,仍然有测试较旧版本的Python运行?
我应该指出该函数本身对早期的Python版本来说工作正常,它只是一些在Python 2.6之前是语法错误的调用。我所看到的用于检查Python版本的各种方法对此不起作用,因为它不会超过编译阶段。
我宁愿不要有测试分成,如果在所有可能的多个文件。
为什么不简单地将代码重新格式化为2.6之前的版本? – 2009-08-23 11:18:44
@美国洛特:我想我并没有意识到,新的语法只是语法糖,它可以在不同的早期版本来完成。如果我知道这是可能的话,我就不会问这个问题(不是每个人都为你:)聪明) – 2009-08-23 15:08:35