3 个不稳定版本
0.2.0 | 2021年9月26日 |
---|---|
0.1.1-alpha.1 | 2021年9月16日 |
0.1.0 | 2021年9月14日 |
在 测试 中排名 #632
48KB
1K SLoC
Pharaoh : 构建测试金字塔!
它是什么
Pharaoh 是一个简单的、无需权限的功能测试运行器,用于命令行应用,由 Rust 编写。
此工具会扫描文件夹中的 YAML 条目(默认情况下为当前目录)并运行其中的所有测试。
以下是一个 YAML 的示例
name: this test will succeed
cmd: printf 'foo\n'
stdout: |
foo
---
name: this test will fail
cmd: printf 'fou\n'
stdout: |
foo
---
name: cat should work
cmd: cat
stdin: |
this is a line
stdout: |
this is a line
---
name: failing for all three reasons
cmd: cat
stdin: |
my input
stdout: |
a different output
stderr: |
an unexpected stderr output
status: 1
对于此类文件中的每个条目,Pharaoh 将运行指定的命令,向其提供指定的 stdin,并将捕获的输出与指定的 stdout、stderr 和退出代码进行比较。如果未指定,则这些值分别默认为空字符串和 0。
为 TDD 制作,适用于 TDD
通常,您想要运行的是您正在工作的程序,并对它进行功能测试。具体来说,Pharaoh 是为了练习双重循环 TDD 而制作的,应与您项目特定的语言单元测试相辅相成。
例如,计算器的前几个测试可能如下所示
name: do nothing if stdin is empty
cmd: ./myevalexpr
---
name: evaluate a single expression
cmd: ./myevalexpr
stdin: |
2 + 4
stdout: |
6
---
name: evaluate multiple lines
cmd: ./myevalexpr
stdin: |
5 + 2
8 * 5
stdout: |
7
40
---
name: handle syntax errors
cmd: ./myevalexpr
stdin: |
2 + +
stderr: |
"2 + +": syntax error
status: 1
安装
发布二进制文件
Linux 和 MacOS 上都有发布二进制文件。请参阅 发布页面 以获取所有可用的二进制文件。
只需将下载的文件重命名为 pharaoh
,通过 chmod +x
使其可执行,并将其放置在您的 $PATH
中即可。
通过 Cargo
由于 Pharaoh 是用 Rust 开发的,因此可以通过 cargo 获取
$ cargo install pharaoh
此项目面向谁?
Pharaoh 是针对学校项目和 kata 设计的,或者更普遍地,针对任何不值得自己构建工具的短期项目。
通常很难向学生教授TDD(测试驱动开发),因为他们的项目通常最长只有几周,而且没有提供测试工具。要求学生在项目之外再开发自己的工具,这个要求对他们来说跨度太大,所以他们通常默认手动进行测试。
此外,许多学生使用权限受限的环境,因此无法使用可能使用容器技术(如docker)的复杂工具。Pharaoh是一个无需进一步安装或配置的直接静态二进制文件,因此非常适合这些用例。
引导示例:使用双重循环TDD开发应用程序
即将推出!
依赖项
~10–24MB
~306K SLoC