基于slack的chatops集成测试
periskop的Python项目详细描述
periskop是一个针对slack机器人的集成测试工具。增加的 使用聊天机器人(如chatops)实现了不同的用例集, 服务台等。通过Periskop,我们可以实现和运行集成 使用简单的yaml文件进行测试。
下面是Periskop的强大功能的一个快速示例:
test_name: chatops_diskspace bot_name: mrrobot timeout: 60 slack: channel: "#periskop-test" as_user: periskop-user text: "!diskspace mymachine /var" expect: regex: true attachments: text: | .*{u'failures': 0, u'skipped': 1, u'ok': 3, u'unreachable': 0, u'changed': 1}.*
此测试chatops_diskspace执行命令 !diskspace mymachine /var在频道中#periskop-test作为用户 periskop-user并检查附件中的结果。结果 是具有正则表达式匹配的字符串。
开始
安装periskop:
pip install periskop
检查安装是否成功。
periskop --help
创建配置文件config.yml,其中包含 运行测试:
slack_token: abcd-efgh-...-... as_user: myusername bot_name: mybotname channel: "#periskop"
确保slack令牌是有效的api tester令牌。我们需要这个 一种代币,因为机器人不能和其他机器人说话:)。
创建第一个测试firsttest.yml:
test_name: chatops_diskspace bot_name: mrrobot timeout: 60 slack: text: "!diskspace mymachine /var" expect: regex: true attachments: text: | .*{u'failures': 0, u'skipped': 1, u'ok': 3, u'unreachable': 0, u'changed': 1}.*
列出所有测试:
periskop list
运行测试:
periskop run firsttest
测试实施
松弛输入
在上面的示例中,我们指定了以下简单的slack命令:
slack: text: "!diskspace mymachine /var"
我们不仅可以指定文本,还可以使用定义的完整参数集 这里:Slack PostMessage API
试验条件
我们可以测试全文匹配或正则表达式。测试允许 用于指定完整的message event type。而不是检查 您还可以检查附件中的文本:
expect: regex: true text: | .*ok.*
正则表达式
test_name: chatops_diskspace bot_name: mrrobot timeout: 60 slack: channel: "#periskop" as_user: periskop-user text: "!diskspace mymachine /var" expect: regex: true attachments: text: | .*{u'failures': 0, u'skipped': 1, u'ok': 3, u'unreachable': 0, u'changed': 1}.*
完全匹配
test_name: status command
bot_name: mrrobot
timeout: 300
slack:
channel: "#periskop"
as_user: periskop-user
text: "!status mymachine"
expect:
attachments:
text: |
```<http://mymachine> | SUCCESS => {\n "changed": false, \n "ping": "pong"\n}```
text: "@mrrobot: Here is your status for `<http://mymachine>` host(s):"`
设置开发环境
git clone https://github.com/unic/periskop.git python setup.py develop
Pypi
如果要更新pypi包,请确保 ~/.pypirc配置:
[distutils] index-servers = pypi pypitest [pypi] repository=https://pypi.python.org/pypi username=your_username password=your_password [pypitest] repository=https://testpypi.python.org/pypi username=your_username password=your_password
然后执行
pip install pypandoc brew install pandoc python setup.py register -r pypi