我试图利用演示者优先的方法来进行一个新的项目。我发现自己有下面的unittest。我是否利用了糟糕的单元测试实践,在这个测试中包含了这么多断言?如果是的话,是我的测试方法的问题,还是执行的问题presenter.setOverview?换句话说,setOverview方法是否应该调用自调整数量而不是self.view.setSalesQty?在这种情况下,我会有一个单独的测试演示者.setSalesQtytestSetOverview测试将不再需要担心测试这个问题。你知道吗
def testSetOverview(self):
# set up mock objects
p = PropertyMock()
type(self.mock_model).descriptions = p
self.mock_model.getData.side_effect = [5, 10]
self.mock_model.getDescription.side_effect = 'Description'
# get required variables
end = dt.date.today()
start = dt.date(year=end.year, month=1, day=1)
pn = 'abcd'
# call presenter method
self.presenter.setOverview(pn)
# test to make sure proper calls were made
model_getData_calls = [call(pn=pn, start=start, end=end,
data=self.mock_model.SHIPPED_QUANTITY),
call(pn=pn, start=start, end=end,
data=self.mock_model.PRICE_PAID)]
self.mock_model.getData.assert_has_calls(model_getData_calls, any_order=True)
assert self.mock_model.getDescription.called
self.mock_view.setSalesQty.assert_called_with(val=5)
self.mock_view.setSalesDols.assert_called_with(val=10)
self.mock_view.setDescription.assert_called_with(val='Description')
所以通常在编写单元测试时,您希望测试一个特定的东西。因为当您编写更多的代码并且测试失败时,您将更容易理解单元测试中失败的内容。这可能是因为您到目前为止所做的断言是在测试代码的一种行为或功能,那么断言就可以了。你知道吗
举个例子,下面有两个函数
list_counter
依赖于word_count
。因此,在测试list_counter
时,可以使用两个断言来确保list_counter
中的两个组件是正确的。但单独测试word_count
可能更明智。你知道吗很难对你的案例做出更具体的评论,因为我无法了解模型的外观。
self.mock_view
也不知从何而来。你知道吗相关问题 更多 >
编程相关推荐