在 pytest 中维护两个 pyfakefs 文件系统以及附加文件

发布于 2025-01-10 08:44:06 字数 670 浏览 1 评论 0原文

我正在尝试使用 pytest 为配置系统编写单元测试,该系统应该在几个不同的位置查找配置文件。我可以通过 fs 插件使用 pyfakefs 创建一个提供一组文件的固定装置,包括一个位置的配置文件,但我想进行单元测试检查两个位置并选择正确的位置。

我最初的想法是我可以创建第一个固定装置,然后添加一个文件:

@pytest.fixture()
def fake_files(fs):
    fs.create_file('/path/to/datafile', contents="Foo")
    yield fs

@pytest.fixture()
def user_config(fake_files):
    fake_files.create_file('/path/to/user/config', contents="Bar")
    yield fake_files

这背后的想法是任何使用 fake_files 的测试都找不到配置,但使用 user_config > 会的。但是,使用该 user_config 固定装置的单元测试找不到该文件。这可能吗?

实际上,第一个固定装置中添加了很多内容,因此将两个系统维护为两个完全独立的固定装置会重复代码,而且我不清楚底层的 fs 对象是否可以并行使用。

I'm trying to write unit tests using pytest for a configuration system that should look in a couple of different places for config files. I can use pyfakefs via the fs plugin to create a fixture that provides a set of files, including a config file in one location, but I'd like to have unit testing that both locations are checked and that the correct one is preferred.

My initial thought was that I could create the first fixture and then add a file:

@pytest.fixture()
def fake_files(fs):
    fs.create_file('/path/to/datafile', contents="Foo")
    yield fs

@pytest.fixture()
def user_config(fake_files):
    fake_files.create_file('/path/to/user/config', contents="Bar")
    yield fake_files

The idea behind this is that any test using fake_files would not find the config, but that using user_config would. However, unit tests using that user_config fixture do not find the file. Is this possible?

There is quite a lot more added in the first fixture in reality, so maintaining the two systems as two completely separate fixtures duplicates code and I am unclear if the underlying fs object can even be used in parallel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文