通过重放记录的调用模拟命令行实用程序

cli-mock的Python项目详细描述


See Build Status on Travis CI

此包提供两个命令行实用程序:crecordcreplay。 前者记录输出(stdout和stderr)和 命令,后者通过复制命令的输出来重放命令调用 返回代码:

$ crecord echo foo
foo
$ creplay echo foo
foo
$ crecord ls foo
ls: foo: No such file or directory
$ creplay ls foo
ls: foo: No such file or directory
$ echo $?
1

这可以用来模拟慢的和依赖于环境的命令调用 用于测试目的。

Pytest插件

cli_mock包中还包含一个pytest插件。它暴露了 popen_controller可用于重播crecord登录的fixture 响应subprocess.Popen调用(以及调用它的api 引擎盖):

def test_foo(popen_controller):
    popen_controller.set_replay_log(my_log)
    output = subprocess.check_output(['foo'])
    assert output == b'bar\n'

重播日志激活后,呼叫subprocess.Popen和朋友 日志中包含的命令将从日志中重播。 不在日志中的命令将触发AssertionError

非严格模式

允许通过 激活非严格模式:

popen_controller.set_strict(False)

或:

popen_controller.set_replay_log(my_log, strict=False)

在非严格模式下,任何不在日志中的命令都将传递给 subprocess.Popen无需修改,将在通常的 时尚。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java变量列表数(ArrayList)作为方法的参数   Elasticsearch(Java)集成测试   java Spring MVC HandlerInterceptorAdapter   将springboot应用程序作为war文件部署在专用tomcat上的java不起作用   java在ArrayList中添加双精度的问题   mysql Apache Solr java教程   java分区字节数组到队列的相等字节数组   java使用方法toString()打印对象   从JMS队列中获取java批处理   如何在Java中获取SWT字体族名称?   java Spring引导2随机500和400错误   java从不在windows上工作的资源加载映像   java是一个正则表达式,它只匹配不包含数字和字母的单词