Jenkins 自動化測試


學習 Jenkins 自動化測試的系列文章

  • Robot Framework 概念
  • Robot Framework 安裝
  • Pycharm + Robot Framework 環境搭建
  • Robot Framework 介紹
  • Jenkins 自動化測試

1. Robot Framework 概念

Robot Framework是一個基於Python的,可擴展的關鍵字驅動的自動化測試框架。

它有幾個主要特點: 

  • 使用簡單易用的表格式語法創建測試用例;
  • 提供從現有關鍵字擴展到更高級別關鍵字功能;
  • 提供易於閱讀的結果報告和 HTML 的 log;
  • 提供標記以分類和選擇要執行的測試用例;
  • 平台和應用程序是獨立的;
  • 支持創建數據驅動的測試用例;

測試數據是簡單,易於編輯的表格格式,啟動 Robot Framework 時,它會處理測試數據,執行測試用例並生成日志和報告。核心框架對測試中的目標一無所知,與它的交互由測試庫處理,庫可以直接使用應用程序接口,也可以使用低級測試工具作為驅動程序。

 

2. Robot Framework 安裝

通過 pip 安裝 Robot Framework:

  1. 鏈接下載 python, 設置環境變量,CMD 控制台輸入 python 驗證是否安裝成功。
  2. 鏈接下載 pip,解壓,CMD 控制台進入解壓目錄,輸入  python setup.py install  , 安裝成功,設置環境變量,輸入 pip 驗證是否安裝成功。

          

  3. pip 安裝 wxpython 2.8.12.1: pip install wxpython==2.8.12.1 

  4. pip 安裝 robotframework: pip install robotframework

  5. pip 安裝 robotframework-selenium2library: pip install robotframework-selenium2library

  6. pip 安裝 rtomac-robotframework-selenium2library: pip install rtomac-robotframework-selenium2library

  7. pip 安裝 decorator-3.3.3.tar: pip install decorator

  8. pip 安裝 robotframework-ride: pip install robotframework-ride

  9. CMD 輸入 ride.py, 彈出 RIDE 界面即為 Robot Framework 框架搭建成功。

  10. 創建桌面 RIDE 圖標:桌面鼠標右擊創建快捷方式, 在請鍵入對象 處輸入  C:\Programs\Python27\pythonw.exe -c "from robotide import main; main()"  ,點擊下一步設置圖標名稱 RIDE 。將圖標更改為機器人圖標,右擊 RIDE 選擇屬性,點擊更改圖標, 在瀏覽器中選擇目錄 F:\Python27\Lib\site-packages\robotide\widgets 找到 robot.ico,點擊確定,圖標變為機器人圖標 RIDE, Done!

 

提示: 如果 pip 安裝時出現如下錯誤:

是由於未設置代理導致的 timeout, 通過設置代理  pip install wxpython==2.8.12.1 --proxy=<proxy_ip:port>  下載即可解決。

 

3. Pycharm + Robot Framework 環境搭建

  1.  下載 Pycharm
  2.  Pycharm 中配置 intelliBot:Pycharm 中點擊 File -> Settings ->  Plugins, 在 搜索欄輸入 intelliBot, 點擊安裝,需要設置代理的話點擊 HTTP Proxy Settings 設置代理下載安裝。
  3.  Pycharm 中配置 suite 和 case 的運行環境:

    配置 suite: Robot Run TestSuite / -d results $FileName$ / $FileDir$

              

    配置 case: Robot Run SingleTestCase / -d results -t "$SelectedText$" ./ / $FileDir$

  4.  測試環境是否搭建成功:

    一個簡單的 case:

*** Settings ***
Documentation    Example case for test
Force Tags    owner
Library    Selenium2Library
Library    Collections

*** Variables ***
${var}     1
${result}   1

*** Test Cases ***
First Case
    [Documentation]    this is a first case for test example
    [Tags]    person
    Log to console    ${var}
    Log to console    ${result}
    should be equal    ${result}    ${var}

   文件名右擊 -> External Tools -> Robot Run TestSuite, 顯示測試結果,環境搭建成功 。

 

4. Robot Framework 介紹

 4.1 變量 Variables

Robot Framework 用 $,@,& 分別表示標量,列表,和字典。在 Variables 下創建變量,一個簡單的 case 如下所示:

*** Variables ***
${var}  value
@{list}  a  b  c  ${var}
&{dict}  key1=name key2=${list}

*** Test Cases ***
First Case
Log to console ${var} 
Log to console ${list} 
Log to console ${dict} 

對應於 python 的語法為 var = “value”, list1 = [‘a’,’b’,’c’,var], dict1={‘key1’:’name’, ‘key2’:list1} 。

用作分隔符的空格可以變化,只要大於兩個空格即可,因此可以很好的對齊數據,建議在關鍵字和參數之間使用 4 個空格 。

4.2 關鍵字 Keywords

 關鍵字 keywords 分為內置關鍵字和自定義關鍵字。

常用內置關鍵字:

  • Set Variable If:  ${var2} Set Variable If condition value1 value2 ,給出一個條件和兩個值,如果條件為true,則返回第一個值,否則返回第二個值;
  • Should contain:  Should Contain ${result} value ,如果 result 不包括 value 一次或者多次,則測試失敗;
  • log: 記錄給定信息;
  • log to console: 將給定信息打印到控制台;
  • set suite variable:  Set Suite Variable ${Scalar} ${Hello world} ,使變量在當前 suite 范圍內都是可用的; 
  • Run Keyword If:  Run Keyword If condition action arg ,如果 condition 為 true, 則使用給定的參數運行指定的關鍵字;

自定義關鍵字:

resource.txt

*** Test Cases *** First Case [Documentation] this is a first case for resource [Tags] anan Calculate and Check Equals Calculate and Check Equals expression=6+3 expected=${9}

*** Keywords ***
Calculate and Check Equals
[Arguments] ${expression}=3+3 ${expected}=${6}
${res} Evaluate ${expression}
Log to console expression=${expression}
should be equal ${res} ${expected}

自定義關鍵字 Calculate and Check Equals,該關鍵字類似 python 的方法,有兩個參數 expression 和 expected 默認值均為 6,如果輸入參數不指定則用默認值。

 4.3  resource / Library

setting 表里使用 resource 導入文件,文件中包含了關鍵字的定義。

setting 表里使用 library 導入內置庫和自定義庫,庫中定義了一系列方法。

*** Settings ***
Documentation    Example case for resource
Force Tags    owner
Resource    ./resource/resource.txt
Library    Selenium2Library
Library    Collections
Library    ./lib/robot.py

 其中 robot.py 是自定義庫。

4.4 自定義庫

自定義庫中定義了一系列關鍵字的方法。

robot.py

import hashlib


def gen_sign(*args):
    m = hashlib.md5()
    m.update(''.join(args))
    return m.hexdigest()
def gen_sign_keywords(*args):
m = hashlib.md5()
m.update(''.join(args))
resource.txt

*** Test Cases ***
First Case
    [Documentation]    this is a first case for resource
    [Tags]    anan
    Calculate and Check Equals
    Calculate and Check Equals  expression=6+3    expected=${9}

*** Keywords ***
Calculate and Check Equals
    [Arguments]    ${expression}=3+3    ${expected}=${6}
    ${res}    Evaluate    ${expression}
    Log to console    expression=${expression}
    should be equal    ${res}    ${expected}

    ${result}    gen_sign    @{list1}
    log to console   ${result}
 4.5 setup & teardown

在 test case 執行前執行 Test Setup,執行后執行 Teardown 。

這樣做,如果多個 test case 都需要執行 Test Setup 和 Teardown 時,可以將共同的部分放到 Suite Setup 和 Suite Teardown 中執行,這樣只需要執行一次即可。

*** Settings ***
Suite Setup    Commen_Suite_Setup
Suite Teardown    Commen_Suite_Teardown
Documentation    Example case for resource
Force Tags    owner
Resource    ./resource/resource.txt
Library    Selenium2Library
Library    Collections
Library    ./lib/robot.py

robot framework 測試例子:

*** Settings ***
Suite Setup    Commen_Suite_Setup
Suite Teardown    Commen_Suite_Teardown
Documentation    Example case for resource
Force Tags    owner
Resource    ./resource/resource.txt
Library    Selenium2Library
Library    Collections
Library    ./lib/robot.py

*** Test Cases ***

First Case
    [Documentation]    this is a first case for resource
    [Tags]    anan
    Calculate and Check Equals
    Calculate and Check Equals  expression=6+3    expected=${9}
    ${result_first_case}    gen_sign    @{list1}
    Set Suite Variable    ${test_id}    ${result_first_case}
    Log to console    ${test_id}
Second Case
    [Documentation]    this is a second case for custom lib
    [Tags]    anan
    ${sign}    gen_sign    @{list1}
    Log to console    ${sign}
    Log to console    ${test_id}
resource.txt
*** Settings ***
Documentation  this is a test demo case
Library    ./../lib/robot.py

*** Variables ***
${var1}     value
@{list1}    a  b  c  d
&{dict1}    key1=sf     key2=${list1}
${INSTANTIATE_JSON_FILE}
${INSTANCEID}

*** Keywords ***
Calculate and Check Equals
    [Arguments]    ${expression}=3+3    ${expected}=${6}
    ${res}    Evaluate    ${expression}
    Log to console    expression=${expression}
    should be equal    ${res}    ${expected}

    ${result}    gen_sign    @{list1}
    log to console   ${result}
    should contain    ${result}    c
    log to console    ${result}

Commen_Suite_Setup
    Common_Case_Setup
    Common_Case_Log

Commen_Suite_Teardown
    Undeploy_Case_Setup

Common_Case_Setup
    Log to console    ${var1}

Common_Case_Log
    Log to console    huyun's test case

Undeploy_Case_Setup
    Log to console    undeploy case setup
resource.txt
import hashlib


def gen_sign(*args):
    m = hashlib.md5()
    m.update(''.join(args))
    return m.hexdigest()


def gen_sign_keywords(*args):
    m = hashlib.md5()
    m.update(''.join(args))
robot.py

 

5. Jenkins 自動化測試

 5.1 持續集成構建

持續集成構建步驟: 代碼集成 -> 編譯 -> 打包 -> 部署 -> 測試

代碼集成: 分支管理,用到的工具有 SVN 或者 Git。

編譯/打包: 用到的工具有 maven、IDE 等。

部署: 將軟件安裝到服務器或者客戶端。

測試: daily build,持續集成構建, CI(Continuous integration) 版本。

5.2 自動化測試

自動化測試概念: 通過編寫腳本用機器代替人工執行測試。

自動化測試流程:

  • 功能測試流程: 需求分析 - 測試計划 - 用例設計 - 測試執行 - 測試報告
  • 自動化測試流程: 測試用例選擇 - 用例編碼實現 - 測試執行 - 測試報告
5.3 自動化測試框架

自動化測試框架(Robot Framework):

自動化測試框架分為幾種類型:

  • 關鍵字驅動框架: 將測試過程的操作方法抽象為關鍵字;
  • 數據驅動框架: 將測試中用到的數據在自動化測試過程中自動加載;
  • 混合型框架: 數據驅動、關鍵字驅動等多種技術融合的框架;
5.4 Jenkins 自動化測試
Jenkins是一個功能強大的應用程序,該程序允許持續集成和持續交付項目。
Jenkins 安裝及教程見鏈接: https://www.yiibai.com/jenkins, 寫的很好,這里不再贅述。

 

參考文章及視頻:

Robot Framework User Guide Version 3.0.4:  http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#id142

Robot Framework BuiltIn: http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Run%20Keyword%20If

Robot Framework 入門教程:  https://blog.csdn.net/be5yond/article/category/6695957

RobotFramework安裝與簡單使用: http://blog.51cto.com/12242709/1920003

Jenkins自動化持續構建視頻: https://tv.sohu.com/v/dXMvMzEwOTcxNjMzLzEwNDM0NzI4MC5zaHRtbA==.html

Jenkins 教程: https://www.yiibai.com/jenkins/jenkins_installation.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM