python 在pytest中使用全局变量

xqnpmsa8  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(312)

我正尝试编写如下测试,结果得到以下错误:

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,它也能正常工作。

rlcwz9us

rlcwz9us1#

请改用nonlocalhits不是全局变量。

nonlocal hits

相关问题