zoukankan      html  css  js  c++  java
  • [E2E] Robot Framework introduction

    We will use demo project as an example, go though QuickStart repo.

    Install:

    First you should have python & pip installed on your machine, then install robot framework libaraies.

    pip install robotframework
    pip install robotframework-selenium2library

    Clone the repo.

    Run:

    robot login_tests

    login_tests is the folder contains all the test cases. After running the tests, it should all pass.

    Keywords:

    You are able to define keywords, you can think 'keywords' is something like composeable function. It combines multi functions together as a single function. In Robot framkwork, it combines multi test cases into one single suit. 

    For example:

    *** Keywords ***
    User "${username}" logs in with password "${password}"
        Input username    ${username}
        Input password    ${password}
        Submit credentials

    "User "${username}" logs in with password "${password}"" is a new "keyword" which can be use elsewhere:

    *** Test Cases ***
    Valid Login
        Given browser is opened to login page
        When user "demo" logs in with password "mode"
        Then welcome page should be open

    "Given", "When" && "Then" are built in keyword in Robot framework.

    And the keyword itself also combines multi keywords:

    Input Username
        [Arguments]    ${username}
        Input Text    username_field    ${username}
    
    Input Password
        [Arguments]    ${password}
        Input Text    password_field    ${password}
    
    Submit Credentials
        Click Button    login_button

    "Argumenets" here you can think it is function params, so when user use "Input Username", should also give a param.

    "Input Text" is a built in keywords,from seleium libaray,  "username_field" is a id selector:

    <td><input id="username_field" size="30" type="text"></td>

    Variables:

    resource.robot:

    *** Variables ***
    ${SERVER}         localhost:7272
    ${BROWSER}        Firefox
    ${DELAY}          0
    ${VALID USER}     demo
    ${VALID PASSWORD}    mode
    ${INVALID USER}    invalid
    ${INVALID PWD}    invalid
    ${LOGIN URL}      http://${SERVER}/
    ${WELCOME URL}    http://${SERVER}/welcome.html
    ${ERROR URL}      http://${SERVER}/error.html

    You can define variables, and you can use those inside other files, just need to import the file contains variables:

    *** Settings ***
    Documentation     A test suite with a single Gherkin style test.
    ...
    ...               This test is functionally identical to the example in
    ...               valid_login.robot file.
    Resource          resource.robot

    Then you can use those like:

    Login Should Have Failed
        Location Should Be    ${ERROR URL}
        Title Should Be    Error Page

    Different way to write tests:

    *** Settings ***
    Documentation     A test suite containing tests related to invalid login.
    ...
    ...               These tests are data-driven by their nature. They use a single
    ...               keyword, specified with Test Template setting, that is called
    ...               with different arguments to cover different scenarios.
    ...
    ...               This suite also demonstrates using setups and teardowns in
    ...               different levels.
    Suite Setup       Open Browser To Login Page
    Suite Teardown    Close Browser
    Test Setup        Go To Login Page
    Test Template     Login With Invalid Credentials Should Fail
    Resource          resource.robot
    
    *** Test Cases ***
    Invalid Username    invalid    ${VALID PASSWORD}
    Invalid Password    ${VALID USER}    invalid
    Invalid Username And Password    invalid    whatever
    Empty Username    ${EMPTY}    ${VALID PASSWORD}
    Empty Password    ${VALID USER}    ${EMPTY}
    Empty Username And Password    ${EMPTY}    ${EMPTY}
    
    *** Keywords ***
    Login With Invalid Credentials Should Fail
        [Arguments]    ${username}    ${password}
        Input Username    ${username}
        Input Password    ${password}
        Submit Credentials
        Login Should Have Failed

    or 

    *** Settings ***
    Documentation     A test suite containing tests related to invalid login.
    ...
    ...               These tests are data-driven by their nature. They use a single
    ...               keyword, specified with Test Template setting, that is called
    ...               with different arguments to cover different scenarios.
    ...
    ...               This suite also demonstrates using setups and teardowns in
    ...               different levels.
    Suite Setup       Open Browser To Login Page
    Suite Teardown    Close Browser
    Test Setup        Go To Login Page
    Test Template     Login With Invalid Credentials Should Fail
    Resource          resource.robot
    
    *** Test Cases ***               USER NAME        PASSWORD
    Invalid Username                 invalid          ${VALID PASSWORD}
    Invalid Password                 ${VALID USER}    invalid
    Invalid Username And Password    invalid          whatever
    Empty Username                   ${EMPTY}         ${VALID PASSWORD}
    Empty Password                   ${VALID USER}    ${EMPTY}
    Empty Username And Password      ${EMPTY}         ${EMPTY}
    
    *** Keywords ***
    Login With Invalid Credentials Should Fail
        [Arguments]    ${username}    ${password}
        Input Username    ${username}
        Input Password    ${password}
        Submit Credentials
        Login Should Have Failed
  • 相关阅读:
    银联测试
    mysql 往表中某个字段的字符串后追加字符串
    jsp通过js往后端传文字时乱码问题的解决
    artTemplate 如何遍历数据
    Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [kstore_goods_platform,kstore_goods,kstore_custom] are excluded from annotation processi
    递归方式实现二分查找
    递归与二分查找
    python内置函数
    函数的四种传参方式
    python基础(四)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6740346.html
Copyright © 2011-2022 走看看