测试函数

最近更新时间:2018-09-14 11:51:24

云函数的测试功能,用于通过控制台或命令行直接发起函数调用,模拟触发器发送的触发事件,并展示云函数的执行情况、返回内容、运行日志。

通过控制台测试函数

在控制台中的函数详情页面,可以通过进入函数代码子页面,单击【运行】,测试运行函数。

测试事件模版

在产品迭代过程中,默认测试事件模版会不断新增。
测试事件模版用来模拟在相应触发器触发云函数运行时,传递给云函数的事件和内容,在函数中以 event 入参的形式体现。测试事件模版需要是 JSON 格式的数据结构。目前已包含的默认测试事件模版和说明如下:

  • Hello World 事件模版:简单、自定义的事件模版,在通过云 API 触发函数时,可输入自定义事件内容。
  • COS 上传、删除文件事件模版:模拟绑定 COS 对象存储触发器后,在 Bucket 中有文件上传或删除时触发云函数所产生和传递的事件。
  • CMQ Topic 事件模版:模拟绑定 CMQ 消息队列主题订阅后,在消息队列中收到消息的情况下触发云函数所产生和传递的事件。
  • API 网关事件模版:模拟 API 网关绑定云函数后,在有 API 请求到达 API 网关时触发云函数所产生和传递的事件。

自定义测试事件模版

在测试前,可以直接选择默认测试模板,也根据自身的事件情况对测试模版进行修改并保持为自定义测试模板。修改后的测试模版将用来作为触发函数运行的事件内容传递给函数。修改后的测试模版需要为 JSON 格式。

自定义测试事件模版使用限制

针对自定义测试事件模版,有如下使用限制:

  • 自定义测试事件模版基于账号范围,同一账号下不同函数共用相同测试事件模版。
  • 单个账号最多可配置 5 个自定义测试模版。
  • 每个自定义测试模版内容最大内容 64 KB。

新建和保存自定义测试事件模版

在测试时,如果不想要每次均修改模版,可以将修改后的测试模版保存为自定义模版。在选定需要修改的模版后,可以单击【新建模版】按钮,完成对模版的修改,并输入一个容易记忆的名字后保存。后续在使用保存的模版测试后,再次进入测试界面时,会仍然保存为上次测试使用的函数模版。

删除自定义测试事件模版

对于不再使用的自定义模版,可以通过选择模版后单击【删除】按钮进行删除。

通过命令行测试函数

在使用腾讯云命令行前,可以通过 命令行安装及配置 方法完成命令行的安装和配置。

通过tccli scf Invoke命令即可运行函数。其中 FunctionName 为必选参数,指明期望运行的函数名,通过 InvocationType 参数可以指定同步或异步运行方式,通过LogType 参数指定是否获取运行日志,通过 ClientContext 参数输入测试事件内容。
在输入测试事件内容时,需要注意的是数据内容的转换,需要先进行 JSON 格式转义后再进行 URL 编码,例如针对{"test":"value"}测试内容,需要先转义为 {\"test\":\"value\"} ,之后再进行 URL 编码为%7B%5C%22test%5C%22:%5C%22value%5C%22%7D

$ tccli scf Invoke --FunctionName testclifunc --ClientContext '%7B%5C%22test%5C%22:%5C%22value%5C%22%7D' --LogType Tail
{
    "Result": {
        "MemUsage": 126976, 
        "Log": "hello world\n{'test': 'value'}\n", 
        "RetMsg": "{\"test\": \"value\"}", 
        "BillDuration": 100, 
        "FunctionRequestId": "ba54a7cc-b569-11e8-b955-525400c7c826", 
        "Duration": 1.049, 
        "ErrMsg": "", 
        "InvokeResult": 0
    }, 
    "RequestId": "8fe876cc-e5b2-42ae-b461-3c45a944d425"
}