commando / dogpatch
一个使用curl编写的HTTP API测试框架
This package is not auto-updated.
Last update: 2024-09-29 21:14:33 UTC
README
一个使用curl编写的HTTP API测试框架。支持ssl、基本认证、传递自定义请求头、重定向 (10级) 以及大多数HTTP请求方法。最初是为测试 Commando.io API 编写的。
规范示例
$dogpatch = new Dogpatch(); $dogpatch->get("https://api.github.com") ->assertStatusCode(200) ->assertHeadersExist(array( "X-GitHub-Request-Id", "ETag" )) ->assertHeaders(array( "Server" => "GitHub.com" )) ->assertBody(IS_VALID_JSON) ->assertTotalTimeLessThan(2) ->close();
$dogpatch = new Dogpatch(); $dogpatch->get("https://freegeoip.net/json/8.8.8.8") ->assertStatusCode(200) ->assertHeadersExist(array( "Content-Length" )) ->assertHeaders(array( "Access-Control-Allow-Origin" => "*" )) ->assertBodyJsonFile(dirname(__DIR__) . "/examples/json/freegeoip.net.json") ->close();
查看完整示例: https://github.com/commando/dogpatch/tree/master/src/examples。
要求
PHP
版本 5.3.0 或更高。
PHP扩展
Curl
构造函数
$dogpatch = new Dogpatch(array $curlOptions = array());
Curl选项
username: 基本认证的用户名。默认为
null
。
password: 基本认证的密码。默认为
null
。
timeout: Curl HTTP请求超时时间(秒)。默认为
60
。
ssl_verifypeer: 尝试使用包含的
ca-bundle.crt
验证ssl peer证书。默认为true
。
verbose: 启用verbose curl日志记录,并将所有请求记录到文件
logs/curl_debug.log
中。默认为false
。
获取
$dogpatch->get($url, array $headers = array());
参数
url: 包括方案 (HTTP, HTTPS) 的完整URL。
headers: 一个可选的关联数组,包含要传递的附加请求头。默认为一个空数组。
发布
$dogpatch->post($url, array $postData = array(), array $headers = array());
参数
url: 包括方案 (HTTP, HTTPS) 的完整URL。
postData: 包含键值对的post数据关联数组。
headers: 一个可选的关联数组,包含要传递的附加请求头。默认为一个空数组。
更新
$dogpatch->put($url, array $headers = array());
参数
url: 包括方案 (HTTP, HTTPS) 的完整URL。
headers: 一个可选的关联数组,包含要传递的附加请求头。默认为一个空数组。
删除
$dogpatch->delete($url, array $headers = array());
参数
url: 包括方案 (HTTP, HTTPS) 的完整URL。
headers: 一个可选的关联数组,包含要传递的附加请求头。默认为一个空数组。
头部
$dogpatch->head($url, array $headers = array());
参数
url: 包括方案 (HTTP, HTTPS) 的完整URL。
headers: 一个可选的关联数组,包含要传递的附加请求头。默认为一个空数组。
断言状态码
$dogpatch->assertStatusCode($assertedStatusCode);
参数
assertedStatusCode: 表示预期响应状态码的整数。
断言头部存在
$dogpatch->assertHeadersExist(array $assertedHeaders = array());
参数
assertedHeaders: 包含预期响应头部的标准索引数组。不检查响应头部的实际值,只检查头部是否存在。头部检查 不区分大小写。
断言头部
$dogpatch->assertHeaders(array $assertedHeaders = array());
参数
assertedHeaders: 包含预期响应头部及其预期值的关联数组。检查响应头部的实际值。头部检查 不区分大小写,但头部值检查 区分大小写。
断言体
$dogpatch->assertBody($assertedBody, $useRegularExpression = false);
参数
assertedBody: 断言响应体,接受四种选项之一。一个字符串,检查 区分大小写。一个正则表达式,根据定义的表达式进行检查。特殊标志
IS_VALID_JSON
或IS_EMPTY
。IS_VALID_JSON
仅验证响应体是正确的JSON并且能够被解码。IS_EMPTY
验证响应体为空。
useRegularExpression: 一个可选的true/false标志,您可以使用全局变量
USE_REGEX
和DONT_USE_REGEX
来引用。如果您希望$assertedBody
通过正则表达式进行检查,则必须将此参数设置为true。默认为false。
与PHP断言体
$dogpatch->assertBodyPhp($asserted, $onNotEqualVarExport = false);
参数
asserted: 断言原生PHP类型 (通常是PHP对象或数组) 与响应体。响应体必须是有效的JSON,它将被自动解码并与
$asserted
进行比较。PHP类型键值检查 区分大小写。
onNotEqualVarExport: 一个可选的true/false标志,您可以使用全局变量
VAR_EXPORT
和DONT_VAR_EXPORT
来引用。如果在$asserted
和响应体之间检测到不匹配,则变量导出,这使得查找差异变得方便。默认为false。
与JSON文件断言体
$dogpatch->assertBodyJsonFile($assertedJsonFile, $onNotEqualPrintJson = false);
参数
assertedJsonFile: 对JSON文件(完整路径)进行断言。响应体必须是有效的JSON,它将被自动解码、格式化输出并与传入的JSON文件进行比较,该文件也将被格式化输出。检查键名和值时,区分大小写。
onNotEqualPrintJson: 一个可选的true/false标志,您可以使用全局变量
PRINT_JSON
和DONT_PRINT_JSON
引用。如果检测到JSON文件和响应体之间的不匹配,将打印两者,方便找到差异。默认为false。
断言总时间小于
$dogpatch->assertTotalTimeLessThan($assertedTime);
参数
$assertedTime: 表示总请求时间最大值的浮点数(以秒为单位)。
关闭
$dogpatch->close();
关闭curl连接并取消设置curl资源以及所有dogpatch类变量。在完全完成使用curl连接进行请求之前,不要调用close()
。一旦调用close()
,就必须实例化一个新的dogpatch对象。例如,以下是不合法的,会抛出异常
$dogpatch = new Dogpatch(); $dogpatch->get("https://www.google.com") ->close() ->get("https://github.com")
相反,这样做
$dogpatch = new Dogpatch(); $dogpatch->get("https://www.google.com") ->close(); $dogpatch = new Dogpatch(); $dogpatch->get("https://github.com") ->close();
或者,如果您想重用相同的curl连接和curl选项
$dogpatch = new Dogpatch(); $dogpatch->get("https://www.google.com") ->get("https://github.com") ->close();
当前版本
https://github.com/commando/dogpatch/blob/master/VERSION
变更日志
https://github.com/commando/dogpatch/blob/master/CHANGELOG.md
支持、错误和功能请求
在GitHub上创建问题(https://github.com/commando/dogpatch/issues)。
版本控制
为了提高透明度并深入了解我们的发布周期,以及为了努力保持向后兼容性,dogpatch将在语义版本控制指南下维护。
版本号将采用以下格式
<主版本>.<次版本>.<修订版>
以下是一些构建指南
- 破坏向后兼容性会使主版本号增加(并重置次版本号和修订版)
- 没有破坏向后兼容性的新功能会使次版本号增加(并重置修订版)
- 错误修复和其它更改会使修订版号增加
有关语义版本控制更多信息,请访问 http://semver.org/。
许可 & 法律
版权所有 2015 NodeSocket, LLC.
在Apache License, Version 2.0(“许可”)下许可;除非遵守许可,否则不得使用此作品。您可以在LICENSE文件中或以下位置获取许可副本
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可下分发的软件按“原样”提供,不提供任何形式的明示或暗示保证。有关许可的具体语言,请参阅许可。