Pytest:如何在运行时更改 ~/.bashrc 令牌?
Pytest: How do I change ~/.bashrc token durning runtime?
我想在我的 bashrc 中动态更改令牌以声明预期结果。
例如:在我的 ~/.bashrc 中我设置了令牌
export GITHUB_ACCESS_TOKEN=ghp_NNNNNNNNNNNN
测试时我想设置token
export GITHUB_ACCESS_TOKEN=TEST
然后断言以检查我是否无法通过 运行 单击命令访问我的存储库:
result = runner.invoke(clicker_cli, ["git", "clone", "<url_here>"])
它没有按预期工作。我仍然可以使用我的原始令牌访问我的存储库。
上下文:
我正在使用 https://click.palletsprojects.com/en/8.0.x/
https://docs.pytest.org/en/6.2.x/monkeypatch.html
您可以设置将在运行时使用的可选 env
字典 (Mapping
)。查看 invoke
documentation 了解详细信息。所以下面的代码就可以了。
result = runner.invoke(
clicker_cli, ["git", "clone", "<url_here>"],
env={"GITHUB_ACCESS_TOKEN": "TEST"}
)
完整示例
这是一个完整的工作示例。
import click
import os
from click.testing import CliRunner
@click.command()
@click.argument("msg")
def echo_token(msg):
click.echo(f"{msg} {os.environ.get('GITHUB_ACCESS_TOKEN')}")
def test_echo_token(token="MY_TOKEN"):
runner = CliRunner()
result = runner.invoke(echo_token, ["Token is"],
env={"GITHUB_ACCESS_TOKEN": token})
assert result.exit_code == 0
assert token in result.output
print(result.output)
我们可以看到运行它正确设置了环境变量
pytest -s click_test.py
# click_test.py Token is MY_TOKEN
我想在我的 bashrc 中动态更改令牌以声明预期结果。
例如:在我的 ~/.bashrc 中我设置了令牌
export GITHUB_ACCESS_TOKEN=ghp_NNNNNNNNNNNN
测试时我想设置token
export GITHUB_ACCESS_TOKEN=TEST
然后断言以检查我是否无法通过 运行 单击命令访问我的存储库:
result = runner.invoke(clicker_cli, ["git", "clone", "<url_here>"])
它没有按预期工作。我仍然可以使用我的原始令牌访问我的存储库。
上下文: 我正在使用 https://click.palletsprojects.com/en/8.0.x/ https://docs.pytest.org/en/6.2.x/monkeypatch.html
您可以设置将在运行时使用的可选 env
字典 (Mapping
)。查看 invoke
documentation 了解详细信息。所以下面的代码就可以了。
result = runner.invoke(
clicker_cli, ["git", "clone", "<url_here>"],
env={"GITHUB_ACCESS_TOKEN": "TEST"}
)
完整示例
这是一个完整的工作示例。
import click
import os
from click.testing import CliRunner
@click.command()
@click.argument("msg")
def echo_token(msg):
click.echo(f"{msg} {os.environ.get('GITHUB_ACCESS_TOKEN')}")
def test_echo_token(token="MY_TOKEN"):
runner = CliRunner()
result = runner.invoke(echo_token, ["Token is"],
env={"GITHUB_ACCESS_TOKEN": token})
assert result.exit_code == 0
assert token in result.output
print(result.output)
我们可以看到运行它正确设置了环境变量
pytest -s click_test.py
# click_test.py Token is MY_TOKEN