Robot Framework15-RF目录结构

在实际工作中会涉及到很多的配置文件,资源文件,测试库等。如何安排它们比较好呢?这将是本篇文章叙述的重点,本篇将对RF目录结构进行展开讲解,包括“select from list by label和run keywords关键字使用,以及RF合理化处理目录结构”。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!

01:本节内容介绍
RF目录结构思维导图png
02:select from list by label

1)关键字含义:按索引从选择列表定位器中选择选项

2)关键字参数:locator, *indexes

03:run keywords

1)关键字含义:按顺序执行所有给定的关键字

2)关键字参数:*keywords

3)注意事项:每个关键字之间用AND连接(此处AND必须是大写)

04:自动化项目的目录结构

1)目前已经接触到项目文件种类

  • 测试套件文件、目录
  • RF资源文件
  • 测试库
  • 变量文件

2)如何根据文件类型进行合理化处理目录结构,建议的目录结构如下:

RF目录结构.png

  • config:一般用来写全局配置文件(比如说变量文件)
  • p y lib:一般用来存放测试库(比如python模块文件)
  • r f l i b:一般用来存放资源文件(比如用户关键字)
  • tc:test case简称。一般用来放测试用例主体(比如测试套件文件,目录)

3)注意:导入相关资源文件时,注意模块搜索路径(从项目根目录往后)

04:RF目录结构实例化
(1.1)要求1:初始化清除工作,包括关键字的实现在RF资源文件中实现
(1.2)要求2:用例放在不同的测试套件目录中。即:一个是‘课程管理’目录,一个是‘老师管理’目录
(2.1)添加课程功能(前置条件:系统中没有课程)
step1: 添加课程,输入课程名、详情描述、展示次序为1,点击创建
(3.1)添加老师功能(前置条件:系统中没有老师,已经有课程 ‘初中语文’,‘初中数学’)
step 1: 添加老师,输入老师姓名、登录名、描述、展示次序为2,选择课程 ‘初中语文’
step 2: 再添加一个老师,展示次序为1,选择课程 ‘初中数学’

1)RF资源文件(keyword关键字)代码如下:

*** Settings ***
Library   SeleniumLibrary
*** Variables ***
${MgrLoginUrl}      http://localhost/mgr/login/login.html
&{user}    name=auto   pw=sdfsdfsdf
*** Keywords ***
login
    go to    ${MgrLoginUrl}
    input text  id:username     &{user}[name]
    input text  id:password     &{user}[pw]
    click element   tag:button
addCourse
    [Arguments]     ${name}     ${desc}     ${display_idx}
    click element  css:[ui-sref="course"]
    click element  css:[class="glyphicon glyphicon-plus"]
    input text     css:[ng-model="addData.name"]    ${name}
    input text     css:[ng-model="addData.desc"]    ${desc}
    input text     css:[ng-model="addData.display_idx"]     ${display_idx}
    click element  css:[ng-click="addOne()"]
    sleep  1
listCourse
    [Return]     ${expect}
    click element  css:[ui-sref="course"]
    ${eles}    get webelements   xpath://td[2]
    FOR     ${ele}       IN      @{eles}
        log to console      ${ele}
    END
    ${expect}      evaluate   [ele.text for ele in $eles]

deleteAllLesson
    click element  css:[ui-sref="course"]
    set selenium implicit wait  1
    FOR     ${i}    IN RANGE     9999
        ${del_buttons}=       Get Webelements  css:[ng-click="delOne(one)"]
        exit for loop if     $del_buttons==[]
        evaluate  $del_buttons[0].click()
        click element  css:[class="btn btn-primary"]
        sleep   2
     END
    ${expect}     listcourse
     set selenium implicit wait  1
     should be true       $expect==[]
setup webtest
    open browser  http://localhost   chrome
    set selenium implicit wait  5
teardown webtest
    close browser
addTeacher
    [Arguments]     ${realname}   ${username}   ${desc}   ${display_idx}  ${course}
    click element  css:[ui-sref="teacher"]
    click element  css:[ng-click="showAddOne=true"]
    input text     css:[ng-model="addEditData.realname"]    ${realname}
    input text     css:[ng-model="addEditData.username"]    ${username}
    input text     css:[ng-model="addEditData.desc"]    ${desc}
    input text     css:[ng-model="addEditData.display_idx"]     ${display_idx}
    select from list by label  css:[ng-model*="courseSelected"]  ${course}
    click element  css:[ng-click*="addTeachCourse"]
    click element  css:[ng-click="addOne()"]
    sleep  1
listTeacher
    [Return]     ${expect}
    click element  css:[ui-sref="teacher"]
    sleep  1
    ${eles}    get webelements   xpath://td[2]
    FOR     ${ele}       IN      @{eles}
        log to console      ${ele}
    END
    ${expect}      evaluate   [ele.text for ele in $eles]
deleteAllTeacher
    click element  css:[ui-sref="teacher"]
    set selenium implicit wait  1
    FOR     ${i}    IN RANGE     9999
        ${del_buttons}=       Get Webelements  css:[ng-click="delOne(one)"]
        exit for loop if     $del_buttons==[]
        evaluate  $del_buttons[0].click()
        click element  css:[class="btn btn-primary"]
        sleep   2
     END
    ${expect}     listTeacher
     set selenium implicit wait  1
     should be true       $expect==[]

2)打开和关闭浏览器初始化和清除操作代码如下(A文件夹下的init.robot):

*** Settings ***
Resource   rflib/rc.robot

Suite Setup     Setup WebTest
Suite Teardown  Teardown WebTest

3)输入账号密码初始化操作代码如下(B文件夹下的init.robot):

*** Settings ***
Resource   rflib/rc.robot
Suite Setup     Login

4)课程管理代码如下:

*** Settings ***
Resource   rflib/rc.robot
Test Setup    deleteAllLesson
Test Teardown  deleteAllLesson

*** Test Cases ***
case1
#增加课程
    addCourse   初中地理    初中地理基础知识     1
#获取课表内容
    ${expect}   listCourse
    should be true      $expect == ['初中地理']

5)老师管理代码如下:

*** Settings ***
Library    SeleniumLibrary
Resource   rflib/rc.robot

*** Test Cases ***
case1
    [Setup]  run keywords   deleteAllTeacher
    ...      AND    deleteAllLesson
    ...      AND    addCourse   初中语文    初中语文基础知识     1
    ...      AND    addCourse   初中数学    初中数学基础知识     2

    addTeacher      小媛     yuanyuan    媛媛老师    2   初中语文
    addTeacher      小羊     yangyang    羊羊老师    1   初中数学
    ${teacher}      listTeacher
    should be true       $teacher==['小羊','小媛']

    [Teardown]  run keywords   deleteAllTeacher   AND   deleteAllLesson

以robot --pythonpath . tc 命令执行tc用例下面所有的测试用例

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容