51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1880|回复: 1
打印 上一主题 下一主题

robot framework 学习心得

[复制链接]
  • TA的每日心情
    无聊
    7 小时前
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-3 15:25:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 测试积点老人 于 2019-1-3 15:26 编辑

    安装
    安装就不着重讲了,网上很多,推荐使用(包含python环境)

    websocket长连接区分连接问题
    安装python库
    1.pip install websocket-client
    2.sudo python setup.py install

    背景介绍

    本次测试主要针对websocket服务器测试,但是项目中存在订阅功能,那么在单个测试用例中必然存在两个连接,但是目前网上的搜到能直接在robot中使用的websocket python库十分不完善,所以自己研究了段时间python.

    自己写了一套能够在测试用例中,每个User Keyword能够直接绑定到某个连接的做法.python库:
    1. <span style="font-weight: normal;"><font size="3">#!/usr/bin/env python
    2. #encoding: utf-8
    3. from websocket import create_connection

    4. def connect(URL,header=None):
    5. ws = create_connection(URL,header=header)
    6. return ws
    7. def call_attr(func,method,arg=None):
    8. if arg:
    9. result = getattr(func,method)(arg)
    10. else:
    11. result = getattr(func,method)()
    12. return result</font></span>
    复制代码

    备注:方法一见名知意,建立了一个websocket连接,并将该连接返回,在robot中被当做变量传递; 方法二第一个func参数实际传递的就是第一个方法中的ws(websocket连接),第二个method参数为这个连接(这里可以把这个连接看为一个对象实例)调用的方法,第三个arg为method方法中需要传递的参数.
    测试用例使用:

    1. <span style="font-weight: normal;"><font size="3">${conn1}        connect        ${url}        ${dict}
    2. Call Attr        ${conn1}        send        ${sendMessage:订阅消息}
    3. Call Attr        ${conn1}        settimeout        ${timeout}
    4. ${result}        Call Attr        ${conn1}        recv
    5. ${conn2}        connect        ${url}/dealer        None
    6. Call Attr        ${conn2}        send        ${sendMessage:修改消息}
    7. ${result}        Call Attr        ${conn2}        recv
    8. ${result}        Call Attr        ${conn1}        recv</font></span>
    复制代码

    备注:其中${conn1}为订阅方,在被订阅的topic有任何变化,订阅方都会收到服务器的推送消息. ${conn2}为修改方,修改了${conn1}订阅的topic数据.
    自定义python库的引用问题

    建议在测试用例文件夹中建立一个Lib文件夹,自定义的python可以书写在该目录下,倘若测试用例文件与Lib同级,引用则是ib/xxx.py,倘若在Lib下一级寻址则为"../Lib/xxx.py";

    总结

    其他事情技术含量到不是太高,都是一些繁琐和重复的工作,多查google,多看F5,不行就自己写python,很多事情还是能够解决的,与君共勉~~~
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 17:28 , Processed in 0.062549 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表