Test::Nginx 使用
2023-8-29
| 2023-8-29
0  |  0 分钟
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
openresty
  • openresty
  • Rust 小记微服务还是单体服务?
    目录