3 个版本
0.0.3 | 2020年10月11日 |
---|---|
0.0.2 | 2020年9月13日 |
0.0.1 | 2020年9月2日 |
#2545 in 命令行工具
95KB
2K SLoC
Parrot 🦜
用于脚本和 CLI 程序的命令行快照测试工具。
parrot 允许您捕获和整理程序输出(状态码、stdout 和 stderr)的快照,并稍后验证这些输出是否仍然相同。
功能
- 轻松进行脚本和 CLI 程序的端到端测试。
- 使用标签整理快照。
- 交互式 REPL 以导航和交互您的快照。
免责声明
此项目仍在开发中,可能存在粗糙的边缘,界面可能会随时间变化。不要犹豫,尝试用于小型项目,但不要仅依赖 parrot 作为您生产级软件测试套件。
目录
安装
首先,您需要 安装 Rust,然后可以使用以下命令安装 parrot
cargo install parrot-snap
用法
要使用 parrot 与您的项目一起使用,您首先必须初始化它
parrot init
这将在您的计算机上创建一个 .parrot
文件夹,该文件夹将保存所有您的快照。然后,您可以添加您的第一个快照
parrot add 'echo "Hello, world!"'
parrot 将显示快照的预览并要求确认。如果您决定保存快照,则 parrot 将打开您最喜欢的编辑器,在那里您可以编辑描述文件:第一行将用作快照名称,其余部分用作描述。退出您的编辑器后,您就完成了,您已经创建了第一个快照。
现在,您可以使用以下命令检查程序输出是否已更改
parrot run
为了获得更互动的体验,例如在开发过程中,您可以使用以下命令打开 parrot 的 REPL
parrot
从那里,您可以导航快照并执行命令。
原理
鹦鹉(Parrot)的一个主要功能是能够为快照添加标签:每次添加快照时,都会要求您输入名称和描述,如果在描述中添加了哈希标签(例如 #this
),则可以在以后通过浏览和运行快照来使用这些标签。当鹦鹉运行时,它会维护一个关于您快照的视图。您可以使用 filter
和 clear
命令(见下一节)通过名称、标签或失败的快照来搜索。通过明智地使用标签,您可以轻松地只运行与您正在处理的部分对应的测试集,或者通过浏览失败的测试的标签来推断问题。
命令
您可以通过使用命令与快照进行交互,或者直接执行它们
parrot exec 'f #demo; r*"
或者在鹦鹉的交互式外壳(REPL)中
parrot
大多数命令都有一个1个字母的缩写版本,可以帮助您更快地完成任务。您还可以通过分号 ;
分隔多个命令来执行它们,这对于鹦鹉的 exec
子命令特别有用。
以下是可用命令及其描述的列表
退出(q)
quit
q
退出鹦鹉。
帮助(h)
help
h
显示命令速查表。
筛选(f)
filter <name>
f <name>
f #<tag>
f ~
f +
f -
对当前视图应用筛选。
<name>
:选择所有包含<name>
的名称的快照。#<tag>
:选择所有带有<tag>
标签的快照。~
:选择所有具有 '等待运行' 状态的快照。+
:选择所有具有 '通过' 状态的快照。-
:选择所有具有 '失败' 状态的快照。
清除(c)
clear
c
从当前视图中删除所有筛选器。
运行(r)
run
r
r *
运行所选快照,或者如果传递了 *
作为参数,则运行当前视图中的所有快照。
显示(s)
show
s
s *
显示所选快照,或者如果传递了 *
作为参数,则显示当前视图中的所有快照。
编辑(e)
edit
e
编辑所选快照的名称或描述。
更新(u)
update
u
u *
通过运行命令并保存新的输出来更新所选快照。如果传递了 *
作为参数,则更新当前视图中的所有快照。
删除(d)
delete
d
d *
删除所选快照,或者如果传递了 *
作为参数,则删除当前视图中的所有快照。
自定义
编辑器
为了决定使用哪个编辑器,鹦鹉会查看 EDITOR
环境变量,您可以通过设置此变量来更改默认编辑器
export EDITOR=nvim
主题
默认主题(如上所示)是 scarlet
,灵感来自同名鹦鹉,但您还可以选择其他几个主题
主题 | 预览 |
---|---|
scarlet | |
blue-and-yellow | |
yellow-crested | |
military | |
hyacinth | |
gray |
要设置主题,请更新 PARROT_THEME
变量
export PARROT_THEME=hyacinth
如果您的终端不支持真彩色,您还可以使用 ansi
主题
export PARROT_THEME=ansi
当前限制
鹦鹉在 Linux 上开发和测试,它应该在 MacOS 上也能工作(有人可以确认这一点吗?)。
依赖项
~5.5-8MB
~143K SLoC