我正在尝试编写一个单元测试,它反复调用一个函数,并测试如果它使用相同的输入多次运行会发生什么。该函数的副产品是,在运行时会发出一些警告。这导致代码如下:
with pytest.warns(RuntimeWarning, match='depends on the pytest parametrization'):
output = func(**kwargs)当我使用pytest.mark.parametrize时,这会变得非常冗长,现在它会导致多个if pytest.warns(...)类型的代码。
我是否可以指定忽略单元测试中仅针对特定行发出的所有警告?像这样的事情
with pytest.ignore_all_warnings():
output = func(**kwargs)忽略警告的其他方法
我知道pytest可以忽略特定的警告吗?和通常忽略警告的方式,但是那些忽略跨文件和函数的警告。我只想忽略单元测试中特定行中的警告。
发布于 2021-12-11 07:10:54
如Python文档中所述,可以使用catch_warnings上下文管理器将警告筛选器中的更改限制为代码块。如果将它与忽略所有警告的非特定筛选器一起使用,则可以在一行中取消所有警告:
import warnings
...
with warnings.catch_warnings():
# ignore all warnings
warnings.filterwarnings('ignore')
do_stuff()这并不是pytest特有的,但是可以在任何代码中使用。
https://stackoverflow.com/questions/70312385
复制相似问题