我正在为一个同时接受*args
和**kwargs
参数的函数编写单元测试。此函数的合理用例是在*args
段之后使用关键字参数,即格式
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版本的各种方法对此没有用,因为它没有超过编译阶段。
如果可能的话,我宁愿不必将测试分成多个文件。
答案 0 :(得分:11)
我认为你不应该测试Python是否正常工作;相反,专注于测试自己的代码。这样做,完全可以以适用于所有Python版本的方式编写特定的调用,即:
f(1, *(2,3,4), **{'keyword':13})
答案 1 :(得分:2)
答案 2 :(得分:1)
为什么要使用这样的语法?我的意思是,除了快捷方式之外,这个2.6功能并没有带来任何真正的优势。
a = [2,3,4]
a.insert(0, 1)
kw = {'keyword'='test'}
f(*a, **kw)