type
status
date
slug
summary
tags
category
icon
password
Test::Nginx 使用 Perl 便携的 nginx 测试组件
安装
测试布局
按照惯例,会在项目的根目录创建一个
t/
的目录来作为测试文件的目录. 当有很多测试文件时,可以在 t/
中进一步的分组 ,比如 t/001-test/
本质上每个 .t 文件都是一个 Perl 脚本文件 ,可以使用 Prove (perl 的通用测试工具)来运行
比如
prove t/001.t
测试文件布局
这里有一个简单的例子
测试文件通常以 .t 作为扩展名 ,每个测试文件本身就是一个 Perl 脚本.
每个测试文件分为两个部分,两个部分使用
__DATA__
来分隔 - 第一部分是简短的 Perl 代码
- 第二部分是测试用例
数据块通过三个横线来设置某种数据块,比如如下的四种类型:
数据块的过滤器
在类型后可以跟一个和多个过滤器
运行
Test::Nginx 依赖 Perl 的 prove 命令来运行测试用例.
运行时 Test::Nginx 会调用 nginx 服务器和 socket 客户端来运行测试,它会自动在系统环境的 Path 中找到 nginx . 所有需要在环境中指定 nginx 的程序路径
可以在程序的根目录添加一个 go.sh 的文件
然后使用这个脚本来做测试 ,比如测试 t/aa.t 这个文件.
可以通过 -v 的选项来生成详细的测试报告
prove -v t/aa.t
运行多个文件
prove -v t/foo.t t/bar.t t/baz.t
通配符运行多个文件
prove -v t/*.t
递归运行目录 -r
prove -r t/
测试单个用例,只需要在用例中为单个用例添加
--- ONLY
测试文件运行的顺序
测试文件通常按照字母顺序运行, 可以通过在测试文件名前面添加数字序列来控制运行的顺序. 例如
虽然 Prove 可以通过 -jN 来支持作业并行运行,但是 Test::Nginx 并真正不支持这种模式.
测试块运行的顺序
测试块会打乱每个文件中的测试块 ,可以通过加入
no_shuffle()
来禁用这种行为测试组件
Test::Nginx::Socket::Lua
用于 ngx_lua 相关的测试框架
通过环境变了 TEST_NGINX_INIT_BY_LUA 导入 ngx_lua module
example
Test::Nginx::Socket::Lua::Stream
测试 stream
example
Test::Nginx::Socket::Lua::Dgram
测试 upd stream
example