在我的项目的__init__.py
文件中,我有以下代码,用于从pyproject.toml
文件中检索程序的当前版本:
from typing import Any
from importlib import metadata
try:
import tomllib
with open("pyproject.toml", "rb") as project_file:
pyproject: dict[str, Any] = tomllib.load(project_file)
__version__ = pyproject["tool"]["poetry"]["version"]
except Exception as _:
__version__: str = metadata.version(__package__ or __name__)
这段代码在Python3.11及更高版本上运行良好.然而,在较早的版本中,tomllib
不存在,因此应该引发异常(版本将通过使用metadata
来确定)
当在带有pytest
的Python3.11上进行测试时,有没有办法设计一个测试来判断这种确定版本的方法在有tomllib
和没有tomllib
的情况下是否都有效,而不必创建没有tomllib
的第二个venv?也就是说,我如何人为地生成异常,以便我可以测试两个分支,而不必切换到不同的版本?