【发布时间】:2023-02-26 22:25:20
【问题描述】:
我正在努力“独立”地测试类方法。
说,我有这个类:
class Counter:
def __init__(self, start = 0):
self.number = start
def increase(self):
self.number += 1
我如何明智地测试方法increase()?
前段时间,一位高级开发人员告诉我(也许我误解了)我应该独立测试我的方法,这样一来,如果类的某些部分发生变化,我的方法仍然可以测试 OK。
这导致我以一种稍微麻烦的方式测试方法:
# Using pytest here
def test_increase():
class MockCounter:
def __init__(self):
self.number = 0
x = MockCounter()
Counter.increase(x)
assert x.number == 1
在哪里,基本上:
- 我用
MockCounter模拟类Counter(所以类Counter不是可能破坏我的测试的依赖项); - 我调用该方法进行测试,因为它是一个静态方法。
它有效,但我觉得我在这里误解了很多。
我错了什么?
【问题讨论】:
-
尝试使方法测试独立于构造函数是不值得的。如果构造函数中断,希望构造函数的测试能够捕捉到它。
-
不要嘲笑你应该测试的东西的一部分。当然,如果
__init__更改为默认情况下start = 1那么您的测试将失败,但是如果您断言行为相反 - 在调用increase之后number属性应该是比以前高一个,不仅仅是1。这样你使用的是真正的类,但如果出现问题,则可以很好地确定问题所在。
标签: python python-3.x pytest