• RF学习使用记录【4】


    四 Extending Robot Framework

    4.1 Creating test libraries

      RF的测试能力由测试库支持决定,已经有许多的测试库,有一些随着RF框架安装,但是更多的需要创建新的库来支持。RF提供了API来支持个人用户自建库。

    4.1.1 Introduction

      RF使用Python语言写成的,所以支持使用python写的库,当使用jython运行RF的时候,可以使用java来写库,如果是由纯python写的代码可以在python和jython环境下运行。使用python的时候也可以通过python c api使用C语言写的库,使用ctypes模块来完成python库和C代码的交互。也可以将外部脚本和工具作为独立进程运行。

      创建库的指导文档:http://code.google.com/p/robotframework/wiki/PythonTutorial

    Different  test library APIs:

    RF 支持三种不同的API,所有的API是以静态API为基础:

    Static API:最简单的就是使用python模块中的方法直接映射为关键字,关键字和该方法有相同的参数。关键字通过Return关键字返回日志和异常输出失败信息。

    Dynamic API

    Hybrid API:

    4.1.2 Creating test library class or module

      测试库可以是一个python模块也可以是python和java类。

    Test library names

      测试库的名称就是在导入库的时候使用的名称,例如一个MyLibrary.py的文件创建一个名称为MyLibrary的库。python的类包含在模块中,如果python中class的名称和module的名称一样,例如Mylib.py中定义一个Mylib的类,import Mylib包之后则可以直接使用Mylib来使用该类,如果名称不同则必须使用模块名和类名来调用类如Mylib.Myclass.其中python语言的库支持接收参数,且可以使用变量。

    *** Settings ***
    Library    MyLibrary     10.0.0.1    8080
    Library    AnotherLib    ${VAR}

    上面的第一个是python模块,第二个是java,其对应的定义如下:

    from example import Connection
    
    class MyLibrary:
    
        def __init__(self, host, port=80):
            self._conn = Connection(host, int(port))
    
        def send_message(self, message):
            self._conn.send(message)
    public class AnotherLib {
    
        private String setting = null;
    
        public AnotherLib(String setting) {
            setting = setting;
        }
    
        public void doSomething() {
            if setting.equals("42") {
                // do something ...
            }
        }
    }

    Test library scope

      库文件作为类有一个内部状态,这个状态可以由关键字和参数来修改。由于该状态可能会影响关键字的运行动作,所以需要确定不会多个用例之间不会意外影响。这种相互影响的存在可能导致一些很难debug的问题。

      RF默认对每一个用例都在调用库时候创建独立的实例来努力保证用例的相互独立,但是这并不能全部适合,因为有时候用例之间需要共享一些状态。

    mark

  • 相关阅读:
    基于alpine定制常用命令镜像
    sudo cat > EOF权限问题
    Nginx AWS ELB 域名解析后端502问题
    harbor使用aws s3存储
    Tomcat 优化和改进
    webservice 使用JaxWsDynamicClientFactory报空指针异常
    spring boot 集成 Apache CXF 调用 .NET 服务端 WebService
    eclipse launching workspace太慢的解决方法
    Remote System Explorer Operation卡死Eclipse解决方案
    同一个Tomcat 同一个端口 部署多个项目
  • 原文地址:https://www.cnblogs.com/lvxiaobo616/p/6639221.html
Copyright © 2020-2023  润新知