帮酷LOGO
  • 显示原文与译文双语对照的内容
Functional tests for command line applications

  • 源代码名称:cram
  • 源代码网址:http://www.github.com/brodie/cram
  • cram源代码文档
  • cram源代码下载
  • Git URL:
    git://www.github.com/brodie/cram.git
  • Git Clone代码到本地:
    git clone http://www.github.com/brodie/cram
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/brodie/cram
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • : 测试时间

    fill是 命令行 应用程序的一个功能测试框架。 fill测试看起来像交互式 shell 会话 Fragment 。 fill运行每个命令并将测试中的命令输出与命令输出的实际结果进行比较。

    下面是来自的fill测试套件插件的一个 Fragment:

    The $PYTHON environment variable should be set when running this test
    from Python.
     $ [ -n"$PYTHON" ] || PYTHON="`which python`"
     $ [ -n"$PYTHONPATH" ] || PYTHONPATH="$TESTDIR/.." && export PYTHONPATH
     $ if [ -n"$COVERAGE" ]; then
    > coverage erase
    > alias cram="`which coverage` run --branch -a $TESTDIR/../scripts/cram"
    > else
    > alias cram="$PYTHON $TESTDIR/../scripts/cram"
    > fi
     $ command -v md5>/dev/null || alias md5=md5sum
    Usage:
     $ cram -h
     [Uu]sage: cram [OPTIONS] TESTS... (re)
     [Oo]ptions: (re)
     -h, --help show this help message and exit
     -V, --version show version information and exit
     -q, --quiet don't print diffs
     -v, --verbose show filenames and test status
     -i, --interactive interactively merge changed test output
     -d, --debug write script output directly to the terminal
     -y, --yes answer yes to all questions
     -n, --no answer no to all questions
     -E, --preserve-env don't reset common environment variables
     --keep-tmpdir keep temporary directories
     --shell=PATH shell to use for running tests (default:/bin/sh)
     --shell-opts=OPTS arguments to invoke shell with
     --indent=NUM number of spaces to use for indentation (default: 2)
     --xunit-file=PATH path to write xUnit XML output

    简单的格式:

    • fill测试使用 .t 文件扩展名。
    • 以两个空格。美元符号和一个空格开始的行在 shell 中运行。
    • 从两个空格开始的行,一个 GREATER 比符号,一个空格允许 多行 命令。
    • 以两个空格开头的所有其他行都被视为命令输出。
    • 以空格结束的输出行和关键字 (re) 匹配为 perl兼容 正规表达式
    • 以空格结尾的行和关键字 (glob) 匹配一个类似语法的数组。 唯一支持的特殊字符是 *? 。 使用 可以转义两个字符,并且反斜杠本身可以转义。
    • 以上述任一关键字结尾的输出行总是首先与实际的命令输出匹配。
    • 以空格结束的行和关键字 (no-eol) 将在不在换行符中结束的实际输出中进行 MATCH 。
    • 实际输出包含不可打印字符的输出行,以及带有空格和关键字 (esc)的后缀。 匹配不可打印输出的行也必须包含关键字。
    • 还有什么是评论。

    下载

    • cram-0.7.tar.gz ( 32 KB,要求 python 2.4 -2.7或者 python 3.1或者更新版本)

    安装

    使用:安装 Cram

    $ wget https://bitheap.org/cram/cram-0.7.tar.gz
    $ tar zxvf cram-0.7.tar.gz
    $ cd cram-0.7
    $ make install

    用法

    fill将为每个经过的测试打印一个圆点。 测试结果会显示出测试输出和实际输出的预期结果,如果测试失败,则打印一个统一上下文差异。 跳过的测试( 使用返回代码 80 退出的空测试和测试) 用 s 标记而不是点。

    例如如果我们运行 Cram ,它自己的示例测试:

    .s.!
    --- examples/fail.t
    +++ examples/fail.t.err
    @@ -3,21 +3,22 @@
     $ echo 1
     1
     $ echo 1
    - 2
    + 1
     $ echo 1
     1
     Invalid regex:
     $ echo 1
    - +++ (re)
    + 1
     Offset regular expression:
     $ printf 'foonbarnbaznn1nAn@n'
     foo
    + bar
     baz
     d (re)
     [A-Z] (re)
    - #
    + @
    s.
    # Ran 6 tests, 2 skipped, 1 failed.

    fill还将测试的实际输出写到 examples/fail.t.err,允许你使用其他差异工具。 这里文件将在下次测试时自动删除。

    当你首先编写测试时,你可能只是编写命令并运行测试来查看发生了什么。 如果你运行 -i 或者 --interactive,系统会提示你将实际输出合并到测试中。 这使得快速Prototype化新测试变得容易。

    你可以通过创建 .cramrc 文件来指定默认选项集。 例如:

    [cram]
    verbose = True
    indent = 4

    使用 --verbose--indent=4 调用fill相同。

    要更改配置文件加载加载的内容,可以设置 CRAMRC 环境变量。 你还可以在 CRAM 环境变量中指定 命令行 选项。

    注意,在运行测试之前,将重置以下 环境变量:

    • TMPDIRTEMPTMP 被设置为 runner 目录的测试 TMP
    • LANGLC_ALLLANGUAGE 设置为 C
    • TZ 设置为 GMT
    • COLUMNS 设置为 80 。 ( 注意:使用 --shell=zsh 时,无法重置。 它将反映终端的实际宽度。
    • CDPATHGREP_OPTIONS 被设置为空字符串。

    fill还为测试提供了以下 环境变量:

    • CRAMTMP,设置为 runner 目录的测试临时。
    • TESTDIR,设置为包含测试文件的目录。
    • TESTFILE,设置为当前测试文件的basename 。
    • TESTSHELL,设置为 --shell 指定的值。

    还要注意,应该注意关闭 shell 测试 stdin的命令。 例如如果尝试在测试中调用 ssh,请尝试添加 -n 选项以防止它关闭 stdin 。 同样,如果调用一个继承 stdout的守护进程并无法关闭它,它可以能会导致挂起 shell的测试 stdout

    插件开发

    使用 Mercurial插件下载正式的开发库:

    hg clone https://bitbucket.org/brodie/cram

    或者 Git:

    git clone https://github.com/brodie/cram.git

    使用填充测试填充:

    pip install -r requirements.txt
    make test

    如果你想对这个项目感兴趣,请访问或者GitHub,查看新的变更或者报告问题。




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语