gpt4 book ai didi

python-3.x - 选择从哪个目录运行 pytest

转载 作者:行者123 更新时间:2023-12-04 08:56:09 24 4
gpt4 key购买 nike

我正在使用 Pytest、Pycharm 和 gitlab-ci 开发 Python 应用程序。

我的项目文件夹结构如下所示:

├── config
│   └── config.yaml
├── models
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-38.pyc
│   │   └── models.cpython-38.pyc
│   └── models.py
├── modules
│   ├── __init__.py
│   ├── sliceconfigbuilder.py
│   └── slicefailoverhandler.py
├── slicefailover.py
└── test
├── __init__.py
├── config
│   ├── 50-project.conf
│   ├── hosts
│   ├── slicefailoverconfig.yaml
│   ├── systemconfig-1.xml
│   ├── systemconfig-12.xml
│   └── systemconfig.xml
├── locks
├── original
│   └── systemconfig.xml
├── test_sliceconfigbuilder.py
└── test_slicefailoverhandler.py

我的一些 (py) 测试涉及加载外部 yaml 文件,即 config.yaml。此外,config.yaml 指定了在测试期间加载的更多外部文件的路径。

我遇到的问题是找出正确的相对路径,因此这在 Pycharm 和 gitlab-ci 中都有效。从 pycharm 中使用“播放”符号运行测试非常方便。问题是 pycharm 中的播放符号似乎是在测试目录之外运行 pytest,而 gitlab-ci 中的 pytest 是在根目录之外运行。

我在 pytest 中找不到合适的选项来更改 pytest 启动的“基本目录”。 pytest 确实提供了“rootdir”选项 (https://docs.pytest.org/en/stable/customize.html) 但这似乎并不能满足我的要求。

我发现的一个解决方法是将“cd test”参数传递给我的 .gitlab-ci.yaml,但由于这似乎是一个常见的问题,我正在寻找更好的解决方案如何处理这个问题以及如何在整个测试期间处理与外部路径的工作。

最佳答案

对于它的值(value),这里有一些样板文件,如果按照“动态更改目录”的精神添加到所有测试文件的顶部,通过为您提供一个可以为文件路径添加前缀的全局文件,这些样板文件将使这项工作生效与。

# --- Globals for config
if os.path.exists("config/config.yaml"):
# - Running from git
NAV2ROOT = "config/"
else:
# - Running directly from file in PyCharm
NAV2ROOT = "../config/"
CONFIG_PATH = os.path.join(NAV2ROOT,config.yaml)

我同意在具有不同根目录的 PyCharm(带有播放符号)中单独运行测试文件的选项会很有用,而且看起来应该存在,但据我所知它不存在。

更一般地说,这似乎是 PyCharm & Pytest 的首选模式正在使用 conftest.py fixtures 来加载许多测试常用的东西(因为 config.yaml 大概是这样)。

关于python-3.x - 选择从哪个目录运行 pytest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63824695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com