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

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

内容简介: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自动化框架 环境搭建、学习笔记》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

Mission Python

Mission Python

Sean McManus / No Starch Press / 2018-9-18 / GBP 24.99

Launch into coding with Mission Python, a space-themed guide to building a complete computer game in Python. You'll learn programming fundamentals like loops, strings, and lists as you build Escape!, ......一起来看看 《Mission Python》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换