PresenterFirst具有多个断言的Unittest

2024-06-28 20:49:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图利用演示者优先的方法来进行一个新的项目。我发现自己有下面的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')

Tags: selfviewmodelwithassertcallmockstart
1条回答
网友
1楼 · 发布于 2024-06-28 20:49:10

所以通常在编写单元测试时,您希望测试一个特定的东西。因为当您编写更多的代码并且测试失败时,您将更容易理解单元测试中失败的内容。这可能是因为您到目前为止所做的断言是在测试代码的一种行为或功能,那么断言就可以了。你知道吗

举个例子,下面有两个函数list_counter依赖于word_count。因此,在测试list_counter时,可以使用两个断言来确保list_counter中的两个组件是正确的。但单独测试word_count可能更明智。你知道吗

def word_count(word):
    return len(word)

def list_counter(listing=None):
    total = 0
    for l in listing:
        total += word_count(l)

    return (len(listing), total)

很难对你的案例做出更具体的评论,因为我无法了解模型的外观。self.mock_view也不知从何而来。你知道吗

相关问题 更多 >