用户关键字$资源文件@导入robot文件

什么是用户关键字
通常的从测试库(也就是python文件)里面提供的关键字,我们叫库关键字
还可以在RF文件中实现关键字,这种关键字我们称之为用户关键字

  • 用户关键字类似于RF层面的函数,把多个关键字操作组成一个“宏”关键字

  • 定义好用户关键字后,该测试套件里面就可以使用该用户关键字了,就像库关键字一样

用户关键字是在用户关键字表里面的,就是rf层面的函数
Keywords 就是把你要封装的步骤去一个名字,可以把整个用例封装成一个用户关键字,但是封装的力度太大了,灵活性就太差了
可以把经常用的封装成用户关键字,哪些动作是常用的。不做特殊处理,只能作用在当前代码文件
用户关键字可以测试用例的文件里,也可以在资源文件里,用的时候导入资源文件

资源文件
在测试套件文件中定义的关键字问题
只能在本测试套件中有效,无法共享给其他测试套件使用
使用资源文件
资源文件其实就是RF层面的库文件

  • 里面可以包含用来共享的变量和关键字

  • 资源文件的格式基本也和测试套件文件类似

     ***Settings***
     Library     Selenium2Library
     Resource    rc.robot    
    

#资源文件的后缀名也是.robot RF中找资源文件:1.先在用例所在文件的目录里找。2.再到py的搜索路径里面找。sys.path里面找。尽量用相对路径
搜索规则

  • 当前用例文件所在的目录

  • 如果找不到就在Python得到模块搜索路径中搜索

~~自动化如下测试用例

用例:检查添加课程功能
前置条件:系统中没有课程,
步骤 1: 添加课程,输入课程名、详情描述、展示次序为2,点击创建
预期结果:创建的课程正确显示在下面的表中。
步骤 2: 再添加一门课程,输入课程名、详情描述、展示次序为1,点击创建
预期结果:创建的课程正确显示在下面的表中,并且按照展示次序排列。
这里为了简化,我们只检查 课程名就可以了
要求:
将用例中的 登录、添加课程、检查课程, 合理使用 资源文件里面的用户关键字 实现
如果可以,将初始化、清除操作 也改为用 用户关键字实现~~
RF测试套件文件 t1.robot

*** Settings ***
Library    Selenium2Library
Resource    rc.robot            #导入用户关键字

Suite Setup  Setup WebTest
Suite Teardown  TearDown WebTest        #初始化清除。这里测试用例少。通常放在__init__.robot的*** settings ***表里面

*** Test Cases ***
测试1
    [Setup]  DeleteAllCourse        auto        sdfsdfsdf           #py里面函数解决重复的代码,配置文件解决重复的数据,把用户名,密码,写在配置文件里面。就是一个.py文件。在rf里面定义在一个变量表的地方


    Login Web Site

    Add Course    初中数学    初中数学   1

    ${lessons}=  Get Course List

    Should Be True   $lessons==[u'初中数学']


    [Teardown]     DeleteAllCourse      auto        sdfsdfsdf



测试2
    [Setup]  DeleteAllCourse        auto        sdfsdfsdf


    Login Web Site

    Add Course    初中语文    初中语文   2

    ${lessons}=  Get Course List

    Should Be True   $lessons==[u'初中语文']


    [Teardown]     DeleteAllCourse      auto        sdfsdfsdf

RF资源文件 rc.robot

*** Settings ***
Library    Selenium2Library
Library    Collections


*** Keywords ***

Setup WebTest           #初始化,打开浏览器。刚开始执行
    Open Browser   http://localhost    chrome               #后面网址参数是一定要加的
    Set Selenium Implicit Wait   10

TearDown WebTest        #清除,关闭浏览器。结束执行
    Close Browser


DeleteAllCourse         #删除课程    用户关键字
    [Arguments]     ${username}     ${password}         #调用时候,要传的参数

    Login Web Site  ${username}     ${password}     #登录谁的账号

    Set Selenium Implicit Wait   2          #等价于driver.implicitly_wait(2)
    :For   ${one}  IN RANGE  99     #rf里面没有while循环,用很大的for来表示,for后面不能加冒号
       \   sleep  1
       \   ${deleteButtons}=  Get Webelements  css:button[ng-click^='delOne']     #根据css找到所有的删除按钮
       \   exit for loop if     $deleteButtons==[]          #如果后面的py表达式成立的话退出循环,py表达式就不需要加{}
       \   Click Element   @{deleteButtons}[0]            #取出列表的一个变量,点击
       \   Click Element   css=button.btn-primary          #删除之后,要点击确定
       \    sleep  1
       Set Selenium Implicit Wait   10
       #CLOSE BROWSER                #关闭浏览器,这里不需要关闭,都是在测试套件里的最后teardown里面


Login Web Site
    [Arguments]     ${username}     ${password}
    Go To     http://localhost/mgr/login/login.html          #访问网址


    Input Text   id=username   auto
    Input Text   id=password   sdfsdfsdf
    Click Button    tag=button


Add Course
    [Arguments]     ${name}      ${desc}    ${displayidx}
    Click Element   css=button[ng-click^=showAddOne]

    input text      css=input[ng-model='addData.name']    ${name}
    input text      css=textarea[ng-model='addData.desc']    ${desc}
    input text      css=input[ng-model='addData.display_idx']    ${displayidx}

    Click Element   css=button[ng-click^=addOne]

    sleep  2


Get Course List

    ${lessons}=   Create List
    ${eles}=   get webelements  css=tr>td:nth-child(2)
    :FOR   ${ele}   IN   @{eles}
    \      Append To List   ${lessons}    ${ele.text}

    [Return]   ${lessons}

猜你喜欢

转载自blog.csdn.net/qq_37615098/article/details/84262411