为了避免业务逻辑和重言式,我应该如何对该功能进行单元测试?

问题描述 投票:0回答:1

我具有无法确定应如何进行单元测试的功能。我已经读过一些关于在测试函数中没有业务逻辑的知识,以及试图避免函数中的重言式]

注意:这是python,我正在使用python的unittest

SOME_CONSTANT = "constant"

def foo(a, b, c):
  arg1 = "something-{}".format(a)
  arg2 = {
    "p1": b + 1,
    "p2": SOME_CONSTANT,
  }
  arg3 = c
  bar(arg1, arg2, arg3)

def bar(arg1, arg2, arg3):
  pass

假设bar已经过单元测试,则在测试bar时可以在foo单元测试中模拟foo。>

我目前对此的单元测试看起来像这样

@patch(bar) # this mocks the bar function
def test_foo(mock_bar):
  a = 1
  b = 2
  c = 3
  foo(a, b, c)

  arg1 = "something-{}".format(a)
  arg2 = {
    "p1": b + 1,
    "p2": SOME_CONSTANT
  }
  arg3 = c
  mock_bar.assert_called_with(arg1, arg2, arg3)

这感觉不对,因为我正在将逻辑复制到单元测试中。有没有更好的方法来对此进行单元测试?

我具有无法确定应如何进行单元测试的功能。我已经读过一些关于在测试函数中没有业务逻辑的信息,以及尝试避免在函数中使用重言式。注:...

python unit-testing python-unittest
1个回答
0
投票

基本上,您需要测试的是foo是否能够根据输入值-arg1arg2和[ C0]。

© www.soinside.com 2019 - 2024. All rights reserved.