测试模板

最近更新时间:2019-06-12 15:44:36

通过测试模板生成命令,可以快速生成相关触发器的模拟事件结构。生成的模拟事件结构,可以直接在本地调试云函数,也可以将其导入到文件中并根据实际所需进行修改,实现您自定义的测试模板。

命令说明

scf cli 通过 local generate-event 命令来生成测试模板。通过执行不同的子命令,可以生成指定触发器的模拟测试模板内容。
使用触发器及触发器内详细事件的命令格式为 scf local generate-event {trigger} {trigger-event}。例如,模拟对象存储(COS)的 PUT 事件,命令为 scf local generate-event cos put。更多详细的触发器及事件见如下表格:

触发器 事件 说明
apigateway proxy API 网关响应请求事件
ckafka consume Ckafka 消费消息事件
cmq notification CMQ Topic 消息事件
cos post/put/delete 对象存储的 POST、PUT、DELETE 事件
timer timeup 定时触发器事件

使用命令

生成测试模板的命令,会直接在终端输出测试模板的 JSON 内容。示例如下:

$ scf local generate-event cos post
{
  "Records": [
    {
      "cos": {
        "cosSchemaVersion": "1.0", 
        "cosObject": {
          "url": "http://testpic-1253970026.cos.ap-guangzhou.myqcloud.com/testfile", 
          "meta": {
            "Content-Type": "", 
            "x-cos-request-id": "NWMxOWY4MGFfMjViMjU4NjRfMTUyMV8yNzhhZjM="
          }, 
          "key": "/1253970026/testpic/testfile", 
          "vid": "", 
          "size": 1029
        }, 
        "cosBucket": {
          "region": "gz", 
          "name": "testpic", 
          "appid": "1253970026"
        }, 
        "cosNotificationId": "unkown"
      }, 
      "event": {
        "eventVersion": "1.0", 
        "eventTime": 1545205770, 
        "requestParameters": {
          "requestSourceIP": "59.37.125.38", 
          "requestHeaders": {
            "Authorization":"q-signature=098ac7dfe9cf21116f946c4b4c29001c2b449b14"
          }
        }, 
        "eventName": "cos:ObjectCreated:Post", 
        "reqid": 179398952, 
        "eventSource": "qcs::cos", 
        "eventQueue": "qcs:0:lambda:cd:appid/1253970026:default.printevent.$LATEST", 
        "reservedInfo": ""
      }
    }
  ]
}

本地测试触发函数

可以通过 Shell 管道的方式,将生成的命令直接用在本地触发调用函数中。例如,执行 scf local generate-event cos post | scf local invoke -t template.yaml testfunction 命令,将 COS POST 模拟事件用于函数触发入参,在本地调用 testfunction 函数。

生成文件

通过输出到文件的方式,可以快速生成测试模板文件。基于测试模板文件,您可以修改为更符合实际所需的测试模板。例如,执行 scf local generate-event cos post > event.json 命令,将会在当前目录生成 event.json 文件,该文件内包含了 COS POST 测试事件内容。