2015-03-02 39 views
1

如果我有一个函数不断变化的参数(添加,删除,重构等),我怎么能在任意参数的测试中调用这个函数?我只想测试一下,当一个依赖项返回True时,函数本身会产生一个特定的异常。现在,我有这样的事情如何用任何参数填充函数?

dependency.return_value = True 
self.assertRaises(Expcetion, function_being_tested, None, None, None, None, None) 
+2

它不会永远提高'大概Expcetion'例外:) – alecxe 2015-03-02 19:32:23

回答

1

虽然我真的不知道,如果你需要这种功能,在这个答案提供的信息工作单元测试都经过精心设计:Programmatically determining amount of parameters a function requires - Python,我们可以看到我们如何可以得到你想要的。

import inspect 

def call_wrapper(func): 
    num_args = len(inspect.getargspec(func)[0]) 
    return func(*([None]*num_args)) 

然后你的单元测试变为:

self.assertRaises(Expcetion, call_wrapper, function_being_tested) 
+0

老实说,这似乎有点小题大做,但你可能是正确的,我应该重构 – Jae 2015-03-02 19:49:34

+1

我的意思是你可以用'self.assertRaises(Exception,function_being_tested,*([None] * len(inpsect.getargspec(func)[0])))''将它排成一行,但如果你频繁地执行该模式,并使其他人在查看代码时更清楚一些。 – aruisdante 2015-03-02 19:51:20