Robot Framework | 04 参数化基于Public API的RFS测试

时间:2022-05-07
本文章向大家介绍Robot Framework | 04 参数化基于Public API的RFS测试,主要内容包括代码、日志、测试报告、总结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

概述

在上文中,我们基于Robot Framework的public API实现了一个基本的自动化测试实例。

下面我们对上文的代码进行进一步封装,对该测试代码实现利用Robot Framework强大的变量能力,来实现参数化封装。

代码

#-*- coding:utf-8 -*-

__author__ = "苦叶子"

from robot.api import TestSuite
from robot.api import ResultWriter
from robot.model import Keyword

# 百度搜索测试封装

class BaiduSearchTest:
    def __init__(self, name, librarys=["SeleniumLibrary"]):
        # 创建测试套件
        self.suite = TestSuite(name)        
    
        # 导入支持库
        for lib in librarys:
            self.suite.resource.imports.library(lib)    
    
    # 创建变量
    def create_variables(self):
        variables = {            
            "${baidu}": "http://www.baidu.com",            
            "${browser}": "Chrome",            
            "${searchWord}": "开源优测",            
            "${search_input}": "id=kw",            
            "${search_btn}": "id=su"

        }        
        for k, v in variables.items():
            self.suite.resource.variables.create(k, v)    

    # 创建测试用例:启动浏览器
    def open_browsers(self):        
        test_01 = self.suite.tests.create("启动浏览器")
        test_01.keywords.create("Open Browser", 
            args=["${baidu}", "${browser}"])
        test_01.keywords.create("Title Should Be", 
            args=["百度一下,你就知道"])   
                 
    # 创建测试用例:百度搜索测试
    def search_word(self):
        test_02 = self.suite.tests.create("百度搜索测试")
        test_02.keywords.create("Input Text",            
            args=["${search_input}", "${searchWord}"])
        test_02.keywords.create("Click Button",                  
            args=["${search_btn}"])
        test_02.keywords.create("Sleep", args=["5s"])    
                 
    # 创建测试用例:断言验证搜索结果标题
    def assert_title(self):
        test_03 = self.suite.tests.create("断言验证搜索结果标题")
        test_03.keywords.create("Title Should Be",      
            args=["开源优测_百度搜索"])    
    
    # 创建测试用例:关闭测试用例
    def close_browsers(self):
        test_04 = self.suite.tests.create("关闭浏览器")
        test_04.keywords.create("Close All Browsers")    
 
    # 运行
    def run(self):
        self.create_variables()

        self.open_browsers()

        self.search_word()

        self.assert_title()

        self.close_browsers()        
        
        # 运行套件
        result = self.suite.run(critical="百度搜索", 
            output="output.xml")        
    
        # 生成日志、报告文件
        ResultWriter(result).write_results(
           report="report.html", log="log.html")

if __name__ == "__main__":
    print("Robot Framework基本执行过程演示代码-高级版")

    suite = BaiduSearchTest("百度搜索测试套件")
    
    suite.run()

将上述代码保存至search_baidu_adv_demo.py中,执行下属命令运行:

python search_baidu_adv_demo.py

IOS赞赏专用

在当前运行目录会生成三个文件:

  • log.html 日志记录
  • output.xml 原始测试记录
  • report.html 测试报告

日志

运行过程日志如下图:

测试报告

测试结果报告如下图:

总结

本文实例代码只是简单的进行封装,大家可以根据需要进一步结合PO模型进行封装,形成更为可用的组织方式。