Turnt是命令行的一个简单的expectstyle测试工具

turnt的Python项目详细描述


小型统一流道N'测试仪(Turnt)

Turnt是一个受Cram和{a2}启发的简单测试工具。 其思想是每个测试都由一个输入文件和一个或多个输出文件组成。 您需要在输入文件上运行命令,并检查输出是否等于预期的输出文件。在

要使用它:

  1. 创建测试文件。在
  2. 决定需要对此输入运行什么命令。 有两种选择: {{{1}你可以把一个测试文件放在cd2}旁边。 或者可以将其嵌入测试文件本身的注释中:使用CMD: mycmd {filename}。在
  3. 得到初始输出。 运行turnt --save foo.tfoo.out中生成预期的输出。 您需要将这些输出文件与测试一起签入版本控制。在
  4. 运行测试。 使用turnt foo.t检查测试输出。 如果测试失败,请添加--diff来比较实际输出和预期输出。在

安装

这是一个python3工具。 用pip安装它:

$ pip install --user turnt

或者,如果您想在Turnt上工作,您可以安装Flit,克隆此存储库,然后键入以下内容以获得带有符号链接的“实时”安装:

^{pr2}$

细节

这些选项在turnt.toml中提供:

  • command。 这是对每个测试输入运行的shell命令。在
  • output。 这是从扩展名到输出文件的映射,以从每个测试中收集。 例如,使用output.txt = "my_output.txt"在每个文本扩展名之后收集my_output.txt,并将其保存在<test-name>.txt中。 使用-指示命令的标准输出,2表示其标准错误。 默认值类似于output.out = "-",即捕获标准输出并将其保存在<test-name>.out中。 如果您想忽略标准输出,您可以自己包含它,也可以省略。在
  • return_code。 退出命令的预期状态。默认为0。在
  • diff。 用于turnt --diff输出的命令。 默认值是diff --new-file --unified。 尝试git --no-pager diff --no-index以获得彩色输出。在

等效地,您可以在测试文件本身中嵌入选项:

  • CMD: <command>重写配置中的command。在
  • OUT: <ext> <filename>重写配置中的output。 您可以这样指定多个文件:每个文件一行。在
  • ARGS: <arguments>。向配置的命令添加参数(见下文)。在
  • RETURN: <code>。预期的退出状态。在

在命令和文件名中,您可以使用某些模式,这些模式将被有关测试的详细信息替换:

  • {filename}:测试文件的名称(不包含目录部分)。在
  • {base}:只是测试文件的基名(没有扩展名)。在
  • {args}:在测试文件中使用ARGS:指定的额外参数。在

如果测试需要多个文件,可以使用目录而不是文件。 输出将放在测试目录中,而不是与之相邻。 输出文件名在该目录中类似于out.ext。 有两种配置仅用于处理目录测试:

  • out_base。 目录测试中输出文件的基名称:默认情况下,out。在
  • opts_file。 要在目录测试中读取以解析内联选项的文件名。在

命令行

以下是命令行选项:

  • --save:将每个测试的当前输出视为“正确”的输出,并将其保存到要签入版本控制的输出文件中。在
  • --diff:显示每个测试的实际输出和预期输出之间的差异。在
  • --verbose-v:禁用Turnt的默认行为,它将禁止测试命令的stderr输出。结果更有用,但更难阅读。在
  • --print-p:不要检查测试结果,只需运行命令并直接显示输出。当交互迭代测试时,这可能很有用(尤其是与-v)结合使用。在
  • --args-a:重写插入命令的args字符串,该字符串通常来自文件内注释。在

轻敲

Turnt默认输出TAP结果。 为了使输出更易于阅读,您可以将其通过管道传输到类似tap-difflet的工具中:

$ npm install -g tap-difflet
$ turnt *.t | tap-difflet

作者

Turnt在Adrian Sampson和{a8}之间。 我们用它来测试Capra中的各种研究编译器。 许可证是MIT。在

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

推荐PyPI第三方库


热门话题
java@AfterEach注释在Spring测试中被忽略   散列如何使用bouncy castle在Java中创建SHA512摘要字符串?   java无法使用Okhttp获取响应cookie   100个数的java阶乘   多线程如何在Java中实现对象计数器   java我的精灵不显示背景   java如何在com上应用PanelSlideListener。索特里。滑动面板。SlidengUpPanelLayout SlideUp库   java如何在JDBC中使用WHERE EXISTS函数   java Swing:标签前景中的白色被绘制为黑色   获取java的时间戳。util。另一个java的日期对象为(10/7/14)。util。日期对象(2014年10月7日星期二11:21:00)   java如何在Spring/OpenJPA 1中重新创建用于更新行锁定的选择   java在保存另一个maven项目中的类时,有没有办法让eclipse识别对该类的更改?   java如何解决Spring中的Servlet上下文错误?   java在mongodb中删除记录   显示的java片段与当前片段重叠,而不是替换它