日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RobotFramework自动化框架—数据驱动测试

發布時間:2024/4/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RobotFramework自动化框架—数据驱动测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前情介紹:

在自動化測試框架中,數據驅動的意思是指定的是測試用例或者說測試套件是由外部數據集合來驅動的框架。

數據集合(也可稱之為數據來源)可以是任何類型的數據文件比如xls,xlsx,csv等等,甚至可以是數據庫中的表。總之,是一個放數據的地方就對了。

核心思想就是數據和測試代碼分離,即使當測試數據發生大量變化的情況下測試代碼(或者說測試用例)可以保持不變。

最常見的例子是需要用多個不同的賬號和密碼來登陸某個郵箱,來驗證哪些是有效的值,哪些是錯誤的值,或者哪些值可以導致出錯等等。

數據驅動并不是和關鍵字驅動等水火不相容的一種驅動模式,我的理解是,兩者更像是互相協助的關系。甚至你把數據看成一種關鍵字也未嘗不可。

  • 練習環境配置
  • 實例1(UI自動化-百度搜索)
  • 實例2(有效登錄)
  • 實例3(無效登錄)
  • 實例4 (Appium)
  • 實例5 (連接mysql數據庫)
  • 實例6 (GET/POST請求)
  • 實例7(接口API測試)
  • Appium Error總結
  • robotframework Error總結
  • 測試需求:

    為了更純粹一點的看到RF中的數據驅動的模式,這次采用了官方的Demo做一個講解。

    對 一個 簡單計算器的Calculator.py進行測試,Calculator.py的代碼如下(寫的漂亮):

    class Calculator(object):BUTTONS = '1234567890+-*/C='def __init__(self):self._expression = ''def push(self, button):if button not in self.BUTTONS:raise CalculationError("Invalid button '%s'." % button)if button == '=':self._expression = self._calculate(self._expression)elif button == 'C':self._expression = ''elif button == '/':self._expression += '//' # Integer division also in Python 3else:self._expression += buttonreturn self._expressiondef _calculate(self, expression):try:return str(eval(expression))except SyntaxError:raise CalculationError('Invalid expression.')except ZeroDivisionError:raise CalculationError('Division by zero.')class CalculationError(Exception):pass

    測試設計:
    數據驅動引入了一個非常有效的概念,即“模板”概念,在很多測試場景下,測試人員輸入的操作是有一定重復性的,區別只在于輸入的數據,還是以登陸為例,除了包含正常的測試用例,還需要有其他的異常用例覆蓋才能保證登陸接口的正確性。基于橫向構造不同的測試數據輸入來判斷不同的測試結果,即為數據驅動。行為可以封裝成模板。

    先用一個CalculatorLibrary庫來進行封裝需要做的測試步驟,對應的驗證和錯誤處理

    • push button
    • push buttons
    • result_should_be
    • should_cause_error

    再在RF中設計兩個模板來使用上面庫中的方法。

    不同的輸入數據則在測試用例中體現。

    測試實現:
    1 . 編寫CalculatorLibrary.py文件,代碼示例如下(最漂亮的還是寫注釋的地方,嘖嘖嘖):

    from calculator import Calculator, CalculationErrorclass CalculatorLibrary(object):"""Test library for testing *Calculator* business logic.Interacts with the calculator directly using its ``push`` method."""def __init__(self):self._calc = Calculator()self._result = ''def push_button(self, button):"""Pushes the specified ``button``.The given value is passed to the calculator directly. Valid buttonsare everything that the calculator accepts.Examples:| Push Button | 1 || Push Button | C |Use `Push Buttons` if you need to input longer expressions."""self._result = self._calc.push(button)def push_buttons(self, buttons):"""Pushes the specified ``buttons``.Uses `Push Button` to push all the buttons that must be given asa single string. Possible spaces are ignored.Example:| Push Buttons | 1 + 2 = |"""for button in buttons.replace(' ', ''):self.push_button(button)def result_should_be(self, expected):"""Verifies that the current result is ``expected``.Example:| Push Buttons | 1 + 2 = || Result Should Be | 3 |"""if self._result != expected:raise AssertionError('%s != %s' % (self._result, expected))def should_cause_error(self, expression):"""Verifies that calculating the given ``expression`` causes an error.The error message is returned and can be verified using, for example,`Should Be Equal` or other keywords in `BuiltIn` library.Examples:| Should Cause Error | invalid | || ${error} = | Should Cause Error | 1 / 0 || Should Be Equal | ${error} | Division by zero. |"""try:self.push_buttons(expression)except CalculationError as err:return str(err)else:raise AssertionError("'%s' should have caused an error."% expression)

    2 . RF中創建一個Data Driven的項目,測試用例和模板的名字的結構如下:

    10.jpg

    ?

    在項目那一級導入CalculatorLibrary庫,導入后CalculatorLibrary里的方法都可以被作為關鍵字使用。

    • 將剛才的CalculatorLibrary.py文件放在和這個項目同一個目錄下。
    • 點擊Library按鈕后輸入文件名即可導入。
    11.jpg

    3 . 最下方的兩個齒輪形狀的就是模板形式,可以通過New User Keyword的方式來創建(創建好一個項目后,在項目名上右鍵則可創建User Keyword),對于計算器測試來說,也就兩種結果,一種是輸入正常的值得到正常的結果,一種是輸入異常的值得到錯誤提示
    Calculator - 正常的值的測試步驟

    Calculator.jpg

    Calculator should fail-異常的值的測試步驟

    should fail.jpg

    4 .構造測試用例來進行測試。
    加減乘除,輸入異常,輸入不允許的值(一串字符串,空值,除以0),比如:

    Calculator error.jpg

    ?

    最終代碼如下:

    *** Settings *** Documentation Example test cases using the data-driven testing approach. ... ... The _data-driven_ style works well when you need to repeat ... the same workflow multiple times. ... ... Tests use ``Calculate`` keyword created in this file, that in ... turn uses keywords in ``CalculatorLibrary.py``. An exception ... is the last test that has a custom _template keyword_. ... ... Notice that one of these tests fails on purpose to show how ... failures look like. Test Template Calculate Library CalculatorLibrary.py*** Test Cases *** Expression Expected Addition 12 + 2 + 2 162 + -3 -1Subtraction 12 - 2 - 2 82 - -3 5Multiplication 12 * 2 * 2 482 * -3 -6Division 12 / 2 / 2 32 / -3 -1Failing 1 + 1 3Calculation error [Template] Calculation should failkekkonen Invalid button 'k'.${EMPTY} Invalid expression.1 / 0 Division by zero.*** Keywords *** Calculate[Arguments] ${expression} ${expected}Push buttons C${expression}=Result should be ${expected}Calculation should fail[Arguments] ${expression} ${expected}${error} = Should cause error C${expression}=Should be equal ${expected} ${error} # Using `BuiltIn` keyword

    CC先生說:RF的數據驅動看起來的確是非常簡潔的,采用了封裝的思維,將更多的操作都封裝到庫,模板中,干凈利落的實現了測試數據和測試步驟的分離。大熱天的,看起來還真是清爽~~~

    作者:CC先生之簡書
    鏈接:https://www.jianshu.com/p/e734c6a92549
    來源:簡書
    著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

    總結

    以上是生活随笔為你收集整理的RobotFramework自动化框架—数据驱动测试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。