gpt4 book ai didi

python - 在pytest中创建不同的环境设置

转载 作者:行者123 更新时间:2023-12-01 08:27:22 24 4
gpt4 key购买 nike

我是 pytest 新手。我想创建一个将在不同环境中运行的测试。每个环境都有自己的变量(base_url、ids 等)。我想在命令行中发送环境,以便测试将使用相关变量。我想为每个具有不同后缀的环境创建不同类型的“settings.py”。例如 settings-dev.py、settings-qa.py 等。但我不确定如何告诉测试使用哪一个,以及在 pytest 中执行此操作的正确方法是什么。一般来说(可能是不同的问题),我如何设置这种“全局变量”以在所有测试中使用?

最佳答案

有几个包以可在非 Django 项目中使用的方式重新实现 Django 的设置系统;这是使用 simple-settings 的示例:

# settings_dev.py
SPAM = 'eggs'


# settings_prod.py
SPAM = 'bacon'


# test_spam.py
from simple_settings import settings


def test_spam():
assert settings.SPAM in ['eggs', 'bacon']

如果通过环境变量传递设置,thins 将开箱即用:

$ SIMPLE_SETTINGS=settings_dev pytest 
======================================== test session starts ========================================
platform linux -- Python 3.6.6, pytest-4.0.2, py-1.7.0, pluggy-0.8.0
rootdir: /home/hoefling/projects/private/stackoverflow/so-54159045, inifile:
collected 1 item

test_spam.py . [100%]

===================================== 1 passed in 0.01 seconds ======================================

如果您想通过命令行参数传递设置,则需要使 --settings arg 为 pytest 所知:创建一个 conftest.py 文件包含以下内容:

def pytest_addoption(parser):
parser.addoption('--settings', action='store')

现在pytest将识别--settings参数,但在其他地方忽略它。

$ pytest --settings=settings_prod
======================================== test session starts ========================================
platform linux -- Python 3.6.6, pytest-4.0.2, py-1.7.0, pluggy-0.8.0
rootdir: /home/hoefling/projects/private/stackoverflow/so-54159045, inifile:
plugins: xdist-1.25.0, metadata-1.7.0, html-1.19.0, forked-0.2
collected 1 item

test_spam.py . [100%]

===================================== 1 passed in 0.01 seconds ======================================

关于python - 在pytest中创建不同的环境设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54159045/

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