我正尝试编写如下测试,结果得到以下错误:
def test_retry():
hits = 0
def f():
global hits
hits += 1
1 / 0
with pytest.raises(ZeroDivisionError):
f()
并得到以下错误:
> hits += 1
E NameError: name 'hits' is not defined
但是我很好奇为什么这段代码不起作用。pytest会改变全局变量吗?
我知道这个问题可以用hits = [0]
这样的列表来解决,但是我试图理解为什么代码不起作用。
我也尝试过使用pytest_configure
,它也能正常工作。
1条答案
按热度按时间rlcwz9us1#
请改用
nonlocal
。hits
不是全局变量。