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模型进行封装,形成更为可用的组织方式。

原文发布于微信公众号 - 开源优测(DeepTest)

原文发表时间:2017-09-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Danny的专栏

关于VB6.0中控件加载的难题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

2004
来自专栏python小白到大牛

学习Python一个星期用Scrapy爬取天气预报实践一番

写一个真正意义上一个爬虫,并将他爬取到的数据分别保存到txt、json、已经存在的mysql数据库中。

1802
来自专栏LinXunFeng的专栏

iOS - 给高仿微信添加直播聊天功能

2173
来自专栏vue学习

6.vue-router之命名路由和命名视图

① 官方文档的解释:https://router.vuejs.org/zh/guide/essentials/named-routes.html 就是在rou...

1051
来自专栏算法修养

javaWeb项目(SSH框架+AJAX+百度地图API+Oracle数据库+MyEclipse+Tomcat)之一 基础Struts框架搭建篇

即将开始着手写这个项目,所以希望通过这篇博客来记录自己学习的过程 今天开学第一天,就上了软件工程实践课,自己也开始着手做这个大作业了。首先我的项目名称叫做智能班...

4159
来自专栏ChaMd5安全团队

第二届强网杯 web方向部分writeup

Web签到 题目信息: Flag: QWB{s1gns1gns1gnaftermd5} 提示: http://39.107.33.96:10000 查看源码发现...

3567
来自专栏阮一峰的网络日志

如何使用mIRC下载电子书

网上现在找英文电子书的方法,除了网页上直接下载以外,大概无非就三种吧:P2P/BT,mIRC,newsgroup。下面转载一篇别人写的如何使用mIRC找书。 =...

2995
来自专栏我的小碗汤

6个最好的Go语言Web框架

原文:Top 6 web frameworks for Go as of 2017

1791
来自专栏蓝天

三种web性能压力测试工具http_load webbench ab小结

题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://www.acme.com/sof...

1641
来自专栏扎心了老铁

使用beanstalkd实现定制化持续集成过程中pipeline

持续集成是一种项目管理和流程模型,依赖于团队中各个角色的配合。各个角色的意识和配合不是一朝一夕能练就的,我们的工作只是提供一种方案和能力,这就是持续集成能力的服...

3427

扫码关注云+社区

领取腾讯云代金券