python 3.6 + robotFramework自动化框架 环境搭建、学习笔记

栏目: Python · 发布时间: 6年前

内容简介:python 3.6 + robotFramework自动化框架 环境搭建、学习笔记
################################################################# 
#author: 陈月白 
#_blogs: http://www.cnblogs.com/chenyuebai/ 
#################################################################

一、环境搭建

概览:win 7+ python 3.6  + pycharm + robotframework + IntelliBot

1.安装相关的库

依次安装:

pip install robotframework

https://pypi.python.org/pypi/selenium/                    #依赖包

https://pypi.python.org/pypi/robotframework-seleniumlibrary        #依赖包

https://pypi.python.org/pypi/robotframework-selenium2library

2.pycharm

开发IDE,  略

3. IntelliBot pycharm开发插件【语法高亮】

方法1:pycharm>File>setting>Plugins>Browse reponsitories

方法2:https://plugins.jetbrains.com/plugin/7386-intellibot   下载至本地

pycharm>File>setting>Plugins>install plugin from disk

4.pycharm配置执行器

File>setting>Tools>External tool,配置完成后即可在.robot文件中选择使用该执行器执行

python 3.6 + robotFramework自动化框架 环境搭建、学习笔记

Parameters:当前文件路径

Working directory:工作路径,日志、结果输出等,如下:

python 3.6 + robotFramework自动化框架 环境搭建、学习笔记

注:log.html 执行日志

output.xml 执行相关信息的xml,可用于后续二次解析

report.xml 执行结果报表

二、使用cmd执行

运行一条用例:

pybot --test test_case test_suit.robot

运行指定文件:

pybot test_suit.robot

运行当前目录下以.robot为后缀名的测试文件

pybot *.robot

运行当前testpath目录下的所有用例

pybot testpath

三、案例脚本(.robot文件)基本语法

1.基本语法

*** Settings ***
Library     MyLib                                          #导入自定义的库
Library     Selenium2Library

*** Test Cases ***
                                                            #第一行为固定格式,标识
                                                            #建议同 python 一致,使用tab缩进对齐(pycharm中设置tab=4空格),否则可能报执行失败,报 "Test case contains no keywords"
case1 helloworld                                            #案例名
    log     chenyuebai first rfw case                        #log 相当于python的print,可在生成的log.xml中查看

case 2 log                                                  #打异常日志,支持多种级别
    log     test line 2     ERROR

case 3 varible
    ${myname}     Set variable        chen                  #定义变量
    log     my name is ${myname}                            #使用变量

#case 4 use varible                                         #变量作用域为其定义所在的案例(case3),否则报"Variable '${myname}' not found."
#    log     ${myname}

case 5 Catenate
    ${hi1}    Catenate      hello    world                  #定义变量方式2  连接两个对象,支持自定义连接符
    log    ${hi1}
    ${hi2}    Catenate      SEPARATOR=----  hello    world
    log    ${hi2}

case 6 list
    @{mylist}       create list     a       b      c        #定义列表
    log many        @{mylist}                               #打印列表中的元素

case 7 get time
    ${currentTime}      get time                            #获取当前时间     2018-01-02 18:05:47
    log     ${currentTime}
    ${currentYear}      get time    format=year             #支持多种传参,详情看函数定义
    log     current year is ${currentYear}

case 8 sleep
    log     get time
    sleep   1                                               #睡眠,等同于python的time.sleep(5)
    log     get time

case 9 if
    ${score}    set variable    55
    run keyword if    ${score}>=90    log    优秀
    ...    ELSE IF    ${score}>=70    log    良好           #ELSE/ELSE IF要大写。。。语法很蛋疼。。为啥不直接套用python的语法。。
    ...    ELSE    log    很差                              # ... 不知道基于什么考虑的。。看起来像是标识属于“run keyword if”这个判断逻辑;类似python的tab?

case 10 for                                                 #for循环,注意需要使用\来标识这个for循环范围,感觉和上面的...类似
    :FOR    ${i}    IN RANGE    5                           #   for in in range(5):
    \   log    ${i}                                         #        print(i)

case 11 allround the list
    @{myList}    create list  1    2    3    4              # myList = [1,2,3,4]
    :FOR    ${i}    IN    @{myList}                         # for i in myList:
    \   log    ${i}                                         #  print(i)

case 12 Evauate                                             #调用python中的方法,很强大
    ${randomNum}    EVALUATE    random.random()     random  #变量    关键字EVALUATE    调用python的方法    方法所在的库名
    log    ${randomNum}

case 13 call my python                                      #导入自定义库,下面有详细说明
    ${nowTime}    get current time
    log    ${nowTime}

case 14 Comment
    log     start
    #line 1
    comment  line 2                                         #标明注释:使用关键字或者#均可
    log     end


case 15 Selenium2Library                      #Selenium2Library库,操作浏览器,可作web界面自动化,待细化
    open_browser    http://www.baidu.com    firefox
    Input text    id=kw    陈月白
    click button    id=su
    sleep       3
    close Browser

2.robot文件中调用自定义库

Selenium2Library提供了很多的方法,但在实际使用中仍有部分场景需要自行编写,robotFramework支持导入用户自定义的库。

以我的目录结构为例:

python 3.6 + robotFramework自动化框架 环境搭建、学习笔记

(1)自定义方法所在的文件:MyRobotFrameworkLib.py

import time
class MyRobotFrameworkLib():
    def __init__(self):
        pass


    #获取当前时间
    def get_current_time(self):
        current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        return current_time

(2)创建MyLib.py

"""
继承自定义库中的类,rfw会解析类中的函数作为关键词
网上也有说此文件应命名为 __init__.py,但我试了,不行
.robot文件执行时报导入失败,看起来像是必须文件名和类名相同(当前是这么处理的)
"""
from MyRobotFrameworkLib import *

class MyLib(MyRobotFrameworkLib):
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

(3).robot文件导入自定义类、使用类中的方法

*** Settings ***
Library     MyLib                                          #导入自定义的库

case 13 call my python 
    ${nowTime}    get current time
    log    ${nowTime}

3.使用Selenium2Library进行web界面自动化测试

#todo

20180126


以上所述就是小编给大家介绍的《python 3.6 + robotFramework自动化框架 环境搭建、学习笔记》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

SEM修炼手册:百度竞价、信息流广告、数据分析与专题页策划实战详解

SEM修炼手册:百度竞价、信息流广告、数据分析与专题页策划实战详解

陈丰洲 / 电子工业出版社 / 2018-10 / 59.80元

SEM人员在职场打拼的过程中,会遇到一个又一个坑,《SEM修炼手册:百度竞价、信息流广告、数据分析与专题页策划实战详解》尝试站在一定的高度,将从业者从专员走向管理岗位过程中可能碰到的问题进行整理,不仅谈竞价推广,也谈基于SEM的营销体系。 《SEM修炼手册:百度竞价、信息流广告、数据分析与专题页策划实战详解》包括11章内容,由浅入深地分享SEM的进阶过程。第1章是SEM概述,让读者对SEM有......一起来看看 《SEM修炼手册:百度竞价、信息流广告、数据分析与专题页策划实战详解》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具