Python 3 how to write unit tests for try except outside functions in modules(Python 3除了模块中的外部函数外,如何编写try的单元测试)
本文介绍了Python 3除了模块中的外部函数外,如何编写try的单元测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道如何为try except块编写Python3单元测试
在Python模块中的函数定义之外定义的。
想象一下,在package/module.py中,我有一个挡路代码,如下所示:
导入操作系统
try:
CONSTANT = os.environ['NOT_EXISTING_KEY']
except KeyError:
CONSTANT = False
finally:
del os
(请不要介意实际代码,我知道我本可以使用os.getenv('NOT_EXISTING_KEY', False)在此特定情况下,我真正感兴趣的是测试try-模块(函数外部)中的挡路除外)是否按预期运行。
如何编写单元测试来检查package.module.CONSTANT是否设置为预期值?
在单元测试文件(我使用pytest)中,我有如下内容:
from package.module import CONSTANT
def test_constant_true():
assert CONSTANT == 'expected_value'
若要测试"尝试挡路"是否正确执行,则常量是否如预期。
但是,我不知道如何模拟导入机制,以便试用挡路中的os.environ引发异常,并且我可以测试该常量设置为false。
我如何才能做到这一点?
推荐答案
可以使用monkeypatch设置环境变量,但必须重新加载模块才能使更改生效:
from importlib import reload
from package import module
def test_constant_true(monkeypatch):
monkeypatch.setenv('MY_KEY', '42')
reload(module)
assert module.CONSTANT == '42'
def test_constant_false():
reload(module)
assert not module.CONSTANT
给定package/module.py的内容:
import os
try:
CONSTANT = os.environ['MY_KEY']
except KeyError:
CONSTANT = False
这篇关于Python 3除了模块中的外部函数外,如何编写try的单元测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Python 3除了模块中的外部函数外,如何编写try的单元测试
基础教程推荐
猜你喜欢
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 包装空间模型 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 求两个直方图的卷积 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
