RF引入自定义库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RF引入自定义库相关的知识,希望对你有一定的参考价值。

参考技术A 小白一枚,在此记录,方便自己回顾。

1、在python安装目录下的 Lib\site-packages 目录下新建一个目录,目录名就是库名,如我创建的TestLoginLibrary文件夹

2、在新建的TestLoginLibrary目录下创建一个python文件,扩展名为py。如:CtLogin.py

3、在新建的TestLoginLibrary目录下创建 __init__.py 文件,文件名必须固定这样。该文件的功能,就是把关键字类暴露出来,让rf能知道。注意py文件名与里面的类名应一致,貌似大小写不区分。

其内容如下:

from CtLogin import CtLogin #第一个CtLogin指刚创建的py文件,第二个CtLogin是py文件中的类名

class TestLoginLibrary(CtLogin):  #这里的类名与库文件夹名称一致,括号中变量是py文件中的类名

    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

4、在rf中引入新建的TestLoginLibrary,不需选择路径,直接输入“TestLoginLibrary”。

5、经过以上,自定义库的骨架就有了,下面自己在CtLogin.py中写具体要实现的功能,比如我要实现的是运行登录接口后获取cookies,方便其他接口使用。

import requests

import json

class CtLogin:

    def __int__(self):

        pass

    def testLogin(self, userName, userPwd):       

        url = "http://XXX.com/login"

        headers =

            "Content-Type": "application/json;charset=UTF-8"

       

        data =

            "userName": userName,

            "authCode": "",

            "userPwd": userPwd

       

        res = requests.post(url=url, json=data, headers=headers)

        return (res.cookies)

6、现在去rf中使用我定义的关键字“testLogin”~

每个测试人员用不同的测试用户名、密码,得到返回值,再把它设置为全局变量。

7、我把登录相关的东西都放在了Resource中,TestCase中引用关键字即可。

是不是很easy~

2019-03-05补充:

在一个library中新建多个关键字方法时,只需要在CtLogin.py文件中添加def方法即可。

RF自定义库

参考技术A

1、自定义的库
2、使用自定义库

类或者模块的形式。
模块名称 = 库名。
模块名称和类名保持一致 = 库名
如果是类:ROBOT_LIBRARY_SCOPE = "GLOBAL"

使用:
Library 库名-相对路径
按照其他库的关键字调用方式一样。

创建测试库类/模块
静态(Static)API
最简单的办法是实现一个模块(用Python),或者类(用Python或Java),其中的方法(methods)直接映射为关键字名称。关键字接受和方法相同的参数。
创建测试库类或模块
测试库的实现可以是Python模块,也可以是Python或Java类。
如果是Python模块,使用 all� =[\'函数名称\']来指定哪些函数是你想要被RF识别为关键字的。
参看RF自带库DateTime
python类的可参看String库、seleniumLibrary库等。

通过属性ROBOT_LIBRARY_SCOPE来控制
这个属性是一个字符串,可以有以下三种取值:
TEST CASE
为每个测试用例创建新的实例。如果有suite setup和suite teardown的话,同样也会新建。这是默认行
TEST SUITE
为每个测试集创建新的实例,最底层的测试集,也就是有测试用例文件组成的测试集,拥有属于自己的测试库实例,高层的测试集,都有属于自己的测试库实例。
GLOBAL(最常用)
整个测试执行过程中只有一个实例被创建。所有的测试集合测试用例共享这个实例。通过模块创建的测试库都是全局的。
注解
如果一个测试库被导入多次,每次使用不同的参数,则不管有没有定义作用域,每次都会新建一个实例。

以上是关于RF引入自定义库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机库自定义项目选择器的背景颜色

使用 LeanBack 支持库自定义 Android TV 界面

spring-data 存储库自定义查询

密钥库自定义路径的Gradlew问题

如何为新式体验文档库自定义 SharePoint Online 列/字段?

三方开源库自定义