gpt4 book ai didi

python-3.x - 在 pytest 中,如何根据 bash shell 表达式设置环境变量?

转载 作者:行者123 更新时间:2023-12-04 16:44:59 24 4
gpt4 key购买 nike

我正在使用 Python 3.8 和 pytest。我有这个 pytest.ini 文件 ...

[pytest]
env_override_existing_values = 1
env_files =
tests/.test_env

我的测试/.test_env 包含

TZ=`ls -la /etc/localtime | cut -d/ -f8-9`

但是,这在我的 pytest 中得到了逐字评估——即 TZ 等于“ls -la/etc/localtime | cut -d/-f8-9”。当我运行“pytest tests/my_test.py”时,有没有一种方法可以将 pytest 的环境变量配置为表达式的结果?仅供引用,它不是执行类似“TZ=ls -la/etc/localtime | cut -d/-f8-9; pytest tests/my_test.py”

的选项

最佳答案

因此,如果我理解正确的话,您想在 pytest 进程中设置一个 envvar,而不使用任何外部参数。您可以像这样在 conftest.py 中使用 session 范围的 pytest fixture:

$ cat conftest.py
import os
import subprocess

import pytest


@pytest.fixture(scope="session", autouse=True)
def setenv():
process = subprocess.run("ls -la /etc/localtime | cut -d/ -f8-9", shell=True, capture_output=True)
os.environ["TZ"] = process.stdout.decode("utf8")

$ cat test_foo.py
import os


def test_my_test():
print(os.environ["TZ"])
$ pytest -s
================================================================================= test session starts ==================================================================================
platform linux -- Python 3.8.2, pytest-6.0.1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/testy
collected 1 item

test_foo.py New York

.

================================================================================== 1 passed in 0.01s ===================================================================================
$ echo $TZ

$

关于python-3.x - 在 pytest 中,如何根据 bash shell 表达式设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63271959/

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