本 Skill 提供完整的百望 ISP 开放平台接口测试能力:
Agent 不往项目目录生成、复制或重写任何脚本。 项目目录只放配置文件。
职责脚本位置说明ISP 专属测试执行器~/.workbuddy/skills/isp-api-tester/scripts/run_isp_test.py内置动态签名 + 云端/本地返参兼容ISP 认证~/.workbuddy/skills/isp-login-skill/scripts/isp_auth.pyget_open_token + get_open_sign数据库查询~/.workbuddy/skills/queryDB-skill/scripts/db_query.pyDatabaseClient + TestCaseGeneratorHTML 报告生成~/.workbuddy/skills/api-test-reporter/scripts/generate_report.py被 isp-api-tester 跨 skill 引用
按接口名分开: test_config_{接口方法名}.json,例如:
test_config_queryinvoicepool.json → baiwang.input.invoice.queryinvoicepooltest_config_invoicepool_query.json → baiwang.input.invoicepool.querytest_config_querymaininfo.json → baiwang.input.invoice.querymaininfo跨会话复用:测试某个接口前,先查项目目录下是否已有对应配置文件,有则直接复用
bash
# 标准执行(Windows PowerShell)
python $env:USERPROFILE\.workbuddy\skills\isp-api-tester\scripts\run_isp_test.py --config test_config_querymaininfo.json --output ./
# 或使用绝对路径
python "C:\Users\PC\.workbuddy\skills\isp-api-tester\scripts\run_isp_test.py" --config test_config_queryinvoicepool.json --output ./
执行完毕自动生成:
test_report_<method>_<timestamp>.html:可视化报告(双击打开)test_results_<method>_<timestamp>.json:原始结果__REPORT_DATA__.js:报告数据文件(与 HTML 同目录)json
{
"meta": {
"title": "发票主信息查询接口测试",
"base_url": "http://opapi.test.51baiwang.com/router/rest",
"method": "baiwang.input.invoice.querymaininfo",
"version": "6.0",
"timeout": 30,
"isp_auth": {
"appKey": "1000139",
"appSecret": "1bccbe47-917e-4374-8fe9-85b44fecab84",
"username": "cpy001",
"password": "Aa123456.",
"userSalt": "15258c22aa1349819e8cf20c0da04956"
}
},
"fixed_params": {
"taxNo": "91440606MA4WHN8C8X"
},
"test_cases": [
{
"id": "TC_001",
"group": "票种覆盖-税控票",
"name": "01-增值税专用发票",
"desc": "税控票:invoiceCode + invoiceNumber 都必传",
"body": {
"invoiceCode": "044031900101",
"invoiceNumber": "12345678"
},
"expect": {
"success": true,
"response.invoiceType": "01"
}
}
]
}
v7.0 接口需要在 meta 中指定版本,并在 body 中传入额外公共参数:
json
{
"meta": {
"version": "7.0",
"isp_auth": { ... }
},
"fixed_params": {
"taxNo": "91440606MA4WHN8C8X",
"encryptType": "AES",
"encryptScope": "request"
}
}
encryptType / encryptScope 在 v7.0 中既是 body 字段,也会被自动提取到 URL query 参数并参与签名。
发票大类票种代码invoiceCodeinvoiceNumber备注数电票31/32/51/59/61/83/84❌ 不传✅ 20位数电号码传空串会触发704税控票01/03/04/08/10/11/14/15✅ 必传✅ 必传传统税控票数电纸票85/86/87/88✅ 必传✅ 必传同时有数电号码
关键:数电票(31/32/51/59/61/83/84)查询时, invoiceCode 字段 完全不传(连空字符串都不行,传 "" 会报704参数为空)。
票种invoiceNumber 来源invoiceCode 来源数电票E_INV_NUM(20位数电号码)无此字段税控票INV_NUM``INV_KIND(发票代码)数电纸票INV_NUM``INV_KIND
success=true → 自动校验 invoiceList/ response/ model 非空success=false → 不校验列表expect 支持的字段#字段类型说明successbool校验响应体 success 字段response.{field}any校验 response 节点下的字段值model.{field}any校验 model 节点下的字段值has_responsebool期望 response/model 字段存在check_page_databool期望返回列表/分页数据
不使用 http_status、 success_allow_any、 check_invoice_list_not_empty 等自定义字段。
参数值接口地址http://opapi.test.51baiwang.com/router/restappKey1000139usernamecpy001passwordAa123456.userSalt15258c22aa1349819e8cf20c0da04956appSecret1bccbe47-917e-4374-8fe9-85b44fecab84购方税号91440606MA4WHN8C8X数据库10.115.96.247:3306/jxindependent0,user: jxindependent
"success": true,异常用例期望 "success": falsepageNumbash
pip install requests pymysql