这是一个关于如何正确测试函数的问题。
我使用pytest来测试一个函数。现在介绍一下这个函数
的背景最初开发人员编写了一个像
这样的函数def the_function(first_df, second_df)
然而,他们似乎意识到某些东西不能与他们的函数一起工作,所以他们将其修改为
def the_function(first_df, second_df, third_df)
我看过代码,在这个新的实现中,他们完全放弃了使用second_df
作为他们的逻辑。现在合乎逻辑的事情应该是把这个函数写成def the_function(first_df,third_df)
但是他们没有。他们只是把second_df
留在那里没有使用
现在我必须为这个函数写一些单元测试
由于second_df
根本没有被使用,我正在考虑准备first_df
和third_df
所需的一些数据,只是为second_df
输入一个空数据框(因为它根本没有被使用)
这个策略可以吗?
我有点担心,因为单元测试的目标之一是保持对函数的任何重写或重构以引入错误,如果将来有人重构the_function
实际上使用second_df
…
如果有人重构了函数,他们不能改变函数的行为。这就是重构的定义。
所以如果有人真的做了一个"改变函数签名"重构以摆脱未使用的第二数据帧,他们还必须更新调用该函数(以及所有其他调用者)的单元测试,理想情况下以谨慎的一步一步的方式进行。不管怎样,没有问题。
如果有人改变了函数的行为,现在它对所有三个数据帧做一些事情,那么当然会破坏现有的单元测试,这很好,因为显然如果函数现在应该做一些不同的事情,单元测试必须反映出来。
至于你应该做什么:为什么不做"remove unused parameter"现在就重构吗?遵循"离开的地方比你发现的更好"这句话;一点点重构的道德规范。