Robotframework之python扩展库编写

发布时间:2024年01月12日

通过对robot自动化框架的使用,大大方便了我们做自动化测试。但很多时候官网提供的扩展库并不能满足我们的测试要求,此时就需要我们编写自己的扩展库。这里以ubuntu下使用python编写自定义扩展库举例说明。

最近笔者在做物联网方面的自动化测试,所以这里以编写MQTT扩展库作为示例:

1) 首先在~/pythonX(笔者使用的python版本为2.7,所以X为2.7)/dist-packages/下新建一个库名,如MyLibrary。

当然也可以在其它路径下新建扩展库,引用时注意指向库的绝对路径即可;按上面新建,引用则只需要填写库名MyLibrary。

2) 新建一个关键字库 _pubmsg.py,如:

#-*- coding:utf-8 -*-
 
import ConfigParser
import string, os, sys ,time
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
from keywordgroup import KeywordGroup
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
 
 
class Pubmsg(KeywordGroup):
 
    def __init__(self):
        cf = ConfigParser.ConfigParser()
        homedir = os.path.split(os.path.realpath(__file__))[0]
        cfgdir= homedir + "/mqtt_config.ini"
        cf.read(cfgdir)
        self.host = cf.get("server", "host") 
        self.port = cf.get("server", "port")
        self.username = cf.get("auth", "username")
        self.password = cf.get("auth", "password")
 
    def pubMsg(self,topic,cnt,qos=1):
        """ 可以在这里对关键字作使用说明"""
        host = self.host
        port = self.port
        username = self.username
        password = self.password
        publish.single(topic=topic, payload=cnt, qos=int(qos), retain=False, hostname=host,port=int(port), client_id="", keepalive=60, will=None, auth={'username':username,'password':password},tls=None,protocol=mqtt.MQTTv31)
        print "sned ok"

上面实际为一个python类,里面有一个关键字,为pubMsg。实际一个关键字为一个函数,如果同类关键字有多个,则可以在里面编写多个对应函数。

3)编写了关键字类,但要想在robot framework启动后加载这个关键字,还需要在MyLibrary目录下创建__init__.py文件,内容如下:、

import os
from _pubmsg import Pubmsg
#上面_pubmsg为关键字文件名,Pubmsg为类名,如果有多个,字按上面格式一一引入
__version__ = '0.1'  #声明版本
 
class MyLibrary(
    Pubmsg,
    … #如果有多个类,则依次列出
):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'  #注意,前面有四个空格

4)此时就可以通过RIDE界面新建测试项目,在库中填写库名MyLibrary,引入该库并使用关键字Pub Msg了。并且此时可以通过F5查找到MyLibrary库,以及对应关键字说明。

如果用户对关键字做文件分类管理,如在MyLibrary下面建子目录,则根目录下__init__.py文件内容这样写:

import os
from keywords import *
#其中keywords为子目录名,里面有多个关键字类,则import为*
__version__ = '0.1'
class MyLibrary(
    Pubmsg
):   
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

并且在子目录下新建__init__.py文件,文件内容如下:

from _pubmsg import Pubmsg
#如果有多个,则按上面格式一一引入
__all__ = [
"Pubmsg",
…
]

上面就是一个简单python扩展库的编写。根据官方提供的扩展库,上面内容不难整理出,希望对你的自动化测试有帮助。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

?这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取?

文章来源:https://blog.csdn.net/okcross0/article/details/135554073
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。