CliRunner
listet keinen Parameter auf, um in seinem documentation einen Kontext bereitzustellen.Wie kann ich einen CTX (Kontext) an CliRunner übergeben?
Folgendes sollte als funktionierendes Beispiel gelten. Das eigentliche Problem ist ein bisschen anders. Es könnte gelöst werden, indem die click dekorierte Funktion in eine eigene Funktion für die Testabdeckung verschoben wird. Dann wäre die Klickfunktion fast nutzlos.
import click
from click.testing import CliRunner
class Config():
def __init__(self):
self.value = 651
@click.command()
@click.pass_context
def print_numberinfo(ctx):
if not hasattr(ctx.obj, 'value'):
ctx.obj = Config()
click.echo(ctx.obj.value)
def test_print_numberinfo():
ctx = click.Context(print_numberinfo, obj = Config())
ctx.obj.value = 777
runner = CliRunner()
# how do I pass ctx to runner.invoke?
result = runner.invoke(print_numberinfo)
assert result.output == str(ctx.obj.value) + '\n'