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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Robot Framework - Variable file

發布時間:2024/9/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Robot Framework - Variable file 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RF導入變量文件

在Setting中導入

Setting中導入變量文件時,和導入外部資源文件類似。變量文件的路徑可以包含參數,如果一個變量文件接受參數,那么它們也可以是變量。

Path最好使用相對路徑,如下:

*** Settings *** Resource ../../eRes.txt Variables ../test.py Variables ../comVar.py product ${arg2} Variables ${RESOURCES}/common.py

Ride 中導入變量文件:


Ride how to import variable file

命令行導入

pybot --help 查看相關幫助信息如下:

import variable file
從命令行導入的Varialbe File,作用域范圍是全局可用的。注意,pybot -v 是導入變量,pybot -V 才是導入變量文件。如果通過 pybot -v 和 pybot -V 創建的變量名存在沖突,則pybot -v選項創建的變量將會被保留。

如果變量文件需要參數,則可以使用冒號來分隔path和params。如果在Winodws系統中使用絕對路徑導入變量文件,則驅動器號后面的冒號不會被認為是一個分隔符:如下:

pybot --variablefile /relative_path/variables.py #相對路徑 pybot -V /absolute_path/common.py #絕對路徑 pybot -V C:\path\variables.py #絕對路徑 pybot -V ../common.py:product #變量文件有一個參數 pybot -V needTwoParams.py:arg1:arg2 #變量文件有多個參數 pybot -V "../common.py:product" -V "../test.py" #導入多個變量文件 powershell

如果多個文件導入時存在變量重名的情況,則最先導入的變量有效 。

創建變量文件

直接創建

基本語法

在變量文件中直接給變量賦值,語法非常簡單,變量名大小寫不敏感。

# -*- coding: utf-8 -*- # python pyuser = 'Brian' # 在RF中等同于:${pyuser} |Set Variable |'Brian' pytags = ["大宗商品","供應鏈金融",'2C電商'] # list pyparams = {'username':'Brian','passwd':'20171219'} _pykey = "f007688f401311e782617cd30ab49afc" __all__ = ['pyuser','pytags'] #變量名需要加引號

RF中的寫法:

#rf中的寫法log many ${pyuser} ${pytags} ${pyparams}${pytags} Evaluate '${pytags}'.decode('utf8')${type_pyuser} Evaluate type($pyuser)${type_pytags} Evaluate type($pytags)${type_pyparams} Evaluate type($pyparams) Ride log

補充幾點:

  • 變量文件中創建的所有以下劃線開頭的變量不會被RF導入,如 ''_pykey'' ;除此之外,也可以使用''__all__'' (雙下滑線)將真正要被RF導入的Variables的加為一個lis;比如上面的例子中,就只有pyuser和pytags被認為是variable,而pyparams將會被忽略;
  • 為了更明確的定義list變量或者dict變量,可以在變量名稱中加上前綴"LIST__" (兩個下劃線)或者 "DICT__"。RF中引用該變量時,不會把前綴當成變量名的一部分。前綴的作用是告訴RF該變量將會是"list-like"或者"dict-like"類型,框架會執行響應的檢查驗證。
  • LIST__pytags = ["大宗商品","供應鏈金融",'2C電商'] # prefix,list-like DICT__pyparams = {"username":"pyuser", "passwd":"20171219"} # prefix,dict-like
  • 變量文件中創建的Set類型或Tuple類型的變量,應該避免在RF中引用,否則可能會報語法錯誤;
  • 通常來說,全局變量名稱應該大寫,非全局變量小寫;
  • 使用對象最為變量的值

    變量文件中的變量不限于只有字符串或其他基本類型作為值。相反,它們的變量可以包含任何對象。在下面的示例中,變量$ {MAPPING}包含一個具有兩個值的Java Hashtable(這個示例只在Jython上運行測試時才起作用)。

    from java.util import HashtableMAPPING = Hashtable() MAPPING.put("one", 1) MAPPING.put("two", 2)

    第二個示例創建了$ {MAPPING}作為Python字典,并且還包含兩個從同一個文件中實現的自定義對象創建的變量。

    MAPPING = {'one': 1, 'two': 2}class MyObject:def __init__(self, name):self.name = nameOBJ1 = MyObject('John') OBJ2 = MyObject('Jane')

    動態創建變量

    由于Variable File本質上是編程語言進行變量的創建,所以可以達到動態創建變量的效果。

    import os import random import time import datetime PATH = os.getcwd() #獲得當前路徑 RANDOM_INT = random.randint(0,9999) #random integer in range [0,9999] CURRENT_TIME = time.time() # 1513661957.0591035 NOW = datetime.datetime.now() #2017-12-19 YEAR = NOW.year MONTH = NOW.month HOUR = NOW.hour

    RF中打印變量的值如下:


    rf log

    YAML語法

    變量文件也可以YAML文件實現。官方例子如下:

    string: Hello, world! integer: 42 list:- one- two dict:one: yksitwo: kaksiwith spaces: kolme #RF中的寫法 *** Variables *** ${STRING} Hello, world! ${INTEGER} ${42} @{LIST} one two &{DICT} one=yksi two=kaksi

    使用特殊函數

    如果在Variable File中存在特殊函數(getVariables、get_variable),可以通過特殊函數來得到變量,此機制使得變量的創建變的非常靈活。

    如果特殊函數存在,RF框架會調用此函數來獲取函數。 函數的預期返回應該是Python的dict 或者 Java的Map, 其中key為Variable名稱, value為Variable值。 其他規則和直接創建變量的情形一樣:,既可以創建scalar, list, dict各種類型的變量,也支持特殊前綴"LIST__" 和 "DICT__"等。

    # -*- coding: utf-8 -*-def getVariables(env = 'test'):if env == 'product':#production environmentDICT__variables = {"dbPort" : "3308","dbUser": "qt_product","dbPasswd" : "qt_product",}else :#test environmentDICT__variables = {"dbPort" : "3309","dbUser": "qt_test","dbPasswd" : "qt_test",}#全局變量,不區分運行環境globalvars = {'projectID':'3456','userID':'6'} DICT__variables['globalvars'] = globalvars #RF中取值用${globalvars['userID']}return DICT__variables

    如果在RF中引入該Variable file文件時不輸入參數,則變量的值打印結果為:



    如果輸入參數product,則變量的值打印結果為:


    切換運行環境

    一般來說,自動化測試的用例不僅只在測試環境運行,可能情況下有三套運行環境:測試環境、灰度環境(沙盒/預發布)、生產環境。調試或者輔助驗證測試時,切環境改變量甚是麻煩。這些變量包括但不限于:一些url信息,數據庫信息,預置用戶信息等等。

    對應以上需求,提供以下解決思路。

    第一種思路是按照運行環境,把變量寫入不同的變量文件。說測試環境的用到的變量寫入testVars.py,生產環境下的變量寫入productionVars.py,運行時根據環境pybot -V導入文件。

    第二種思路是使用特殊函數,在一個文件中創建所有環境下需要的變量,函數入參為測試環境,默認參數為test,變量文件樣例在上面已經給出了。

    最后,我們來探討一下,所謂的RF的全局變量,想要只在用例里改變它的值,并且后續用例里用改變后的值,提供思路:通過變量文件,利用字典update方法將改變內存里的值的特性。

    如上面的例子中,變量文件中定義了一個變量projectID:

    globalvars = {'projectID':'3456','userID':'6'} DICT__variables['globalvars'] = globalvars

    下圖中兩個suite 文件Test1和Test2都導入了該變量文件,在Test1下的case1中更新該變量的值,在Test2的case2下,它的值還是6666,如果再次用update的方法更新時,后續所有的Case中的值都會是更新后的值。如此,達到用例中間變更變量后續可用的目的。



    參考文檔

    • rf變量進階--變量文件的使用,環境快捷切換等
      ,雪霽
    • 其他測試框架 測試開發之路----框架中數據的管理策略
    • robot framework - variable file
    • 《我的RobotFramework書》,1-6-2 變量文件, Vairable Files

    總結

    以上是生活随笔為你收集整理的Robot Framework - Variable file的全部內容,希望文章能夠幫你解決所遇到的問題。

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