基于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 =&gt; {\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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Pinch zoom仅放大到中心   简单java程序中的折扣错误   java使用SAP JCO调用获取JCO_错误_系统_失败   java servicedesk plus webflux curl(api3)   字符串java int toString()错误   java我对Kotlin Android Studio 4的Gradle同步有问题   java如何通过引用从Firebase获取一个对象数据   java Esper规则语言:从模式返回类的数据字段   oop Java抽象类实现了一个接口,两者都有相同的方法   java将大型Gzip数据文件上载到HDFS   java Spring引导:处理SizeLimitExceedeException总是在RestTemplate中给出“SocketException:软件导致的连接中止:recv失败”   java未绑定类路径变量   java列出所有liquibase sql类型   java如何通过使用google附近的连接api将文件名发送到具有有效负载的其他设备时更改文件名   java使用OpenLayers在定义的层上捕获双击事件。js   java如何在可见的两个视图之间切换?   java需要关于设计模式的建议