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

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第三方库


热门话题
junit cucumber为什么会找到“runTest.java”来运行测试?   在Eclipse中找不到java KeyPairGenerator   java NotSerializableException即使在实现Serializable之后   noclassdeffounderror(java字符串连接)为什么会出现这种异常?   java Guice:将接口绑定到由动态代理创建的实例   使用Spring数据neo4j创建空间索引时发生java错误   java对于需要在50多个excel文件上运行并且每个文件平均包含25k行的项目,最佳的方法是什么   javaNIO中的java缓冲区写入/发送消息问题   如何在Java/eclipse中添加不调用super()的警告   JavaSpring:mvcUrl映射错误的id   java应该在getInstance或构造函数中使用Init方法吗?   安卓中的java空指针异常错误   java Jsoup不能完全获取原始html代码