查看原文
其他

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

苦叶子 开源优测 2022-11-13

点击上方蓝字“开源优测”一起玩耍

概述

在上文中,我们基于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模型进行封装,形成更为可用的组织方式。


开源优测

分享软件测试开源技术、经验、方案的首发平台

长按二维码/微信扫描 关注开源优测

QQ群:260407012

苦叶子私人微信:liyimin1912

有问题,可留言或加好友进微信群

苦叶子原创文章首发平台


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存