以bdd方式测试任何命令行接口。
bddcli的Python项目详细描述
bddcli
以bdd方式测试任何命令行接口。
关于
在另一个(独立的)框架中轻松测试命令行接口的框架 处理并收集进程的stdout、stderr和returnstatus。
安装
只支持Python >= 3.6
。
pip install bddcli
快速启动
参数
importsysfrombddcliimportGiven,when,stdout,status,stderr,Application,givendeffoo():print(' '.join(sys.argv))return0app=Application('foo','mymodule:foo')withGiven(app,'Pass single positional argument','bar'):assertstatus==0assertstdout=='foo bar\n'when('Without any argument',given-'bar')assertstdout=='foo\n'when('Pass multiple arguments','bar baz')assertstdout=='foo bar baz\n'when('Pass multiple arguments, another method',['bar','baz'])assertstdout=='foo bar baz\n'when('Add an argument',given+'baz')assertstdout=='foo bar baz\n'
标准输入
withGiven(app,'Pass stdin',stdin='foo'):assert...when('stdin is empty',stdin='')assert...
标准输出和误差
frombddcliimportstderr,stdoutassertstderr==...assertstdout==...
环境变量
importosfrombddcliimportGiven,stdout,Application,when,givendeffoo():e=os.environ.copy()dele['PWD']print(' '.join(f'{k}: {v}'fork,vine.items()))app=Application('foo','mymodule:foo')withGiven(app,'Environment variables',environ={'bar':'baz'}):assertstdout=='bar: baz\n'when('Without any variable',environ=given-'bar')assertstdout=='\n'when('Add another variables',environ=given+{'qux':'quux'})assertstdout=='bar: baz qux: quux\n'
有关更多示例,请参见测试