轉(zhuǎn)載
變量的聲明、賦值及其使用
List Variables-List變量及其用法
一袁铐、Scalar變量$的聲明
1揭蜒、變量標識符
每個變量都可以用 變量標識符{變量名} 來進行表示,變量標識符在之前用戶關(guān)鍵字的地方介紹了一下剔桨,Scalar變量用$
作為標識符屉更,List型變量用 @
作為標識符,不過這只能作為一個初步的區(qū)分洒缀,使用$
的變量瑰谜,實際上也可以在接收List值后轉(zhuǎn)化成List變量。轉(zhuǎn)化的內(nèi)容會在List變量里介紹树绩。
2萨脑、變量聲明
其實這里沒有什么特別的變量聲明,因為RF底層是Python饺饭,所以他的語法也有些類似渤早,變量不需要特定聲明,只要有初始化賦值即可使用瘫俊。
如果硬要說有聲明蛛芥,那可以把我們在TestSuite下面手動添加的變量理解為聲明吧。比如我們可以在TestSuite上點右鍵或者在Edit區(qū)點Add Scalar或Add List來新增變量军援。
實際上也可以看做另一種形式的變量賦值仅淑,一般相當于使用Set Variable進行初始化賦值。
可以Import需要用到得Library
3胸哥、變量賦值
賦值也是有幾種的涯竟,根據(jù)自己的需求進行處理吧。
1)Set 賦值
通常這種方式主要使用Set Variable或類似的使用了Set的關(guān)鍵字對變量進行賦值。例如:
2)Get 賦值
主要用于返回值上庐船,包括系統(tǒng)關(guān)鍵字的返回值和用戶關(guān)鍵字的返回值(從廣義上說银酬,Set那個也是返回值),例如:
之前的用戶關(guān)鍵字里也有很多例子筐钟。
3)運行時賦值
詳見流程與數(shù)據(jù)分離最后一篇揩瞪,使用小v 的argument。
特別注意:如果一個變量沒有經(jīng)過賦值篓冲,使用時會報錯的李破。
4、變量的作用域
通常情況下壹将,每個變量默認都是局部變量嗤攻。
一個case里的變量,作用域在這個case內(nèi)部诽俯;
一個userkeyword里的變量妇菱,作用域在這個userkeyword內(nèi)部;
一個文件型suite里的變量暴区,作用域在這個suite內(nèi)部闯团,所有下面的case也都可以使用。
一個目錄型suite里的變量仙粱,作用域在這個目錄內(nèi)房交,他下面的文件型suite是無法使用的,所以一般在目錄下新增變量沒有太大意義缰盏。
作用域是可以修改的涌萤,即通過一些系統(tǒng)關(guān)鍵字,對變量進行作用域的設(shè)定口猜,常用的關(guān)鍵字有:
Set Global Variable ——設(shè)定全局級變量
Set Suite Variable ——設(shè)定suite級變量
Set Test Variable ——設(shè)定case級變量
二负溪、變量的使用
其實使用變量我覺得不需要說太多了,變量的賦值可以看一下用戶關(guān)鍵字的返回值部分济炎,里面的單個返回值和多個返回值其實就是給單個變量賦值和多個變量賦值的例子了党涕。
這里再列幾種之前沒有寫過的例子吧朱嘴。
1磷斧、在判斷中使用
例如這樣寫假消,在第二行的判斷中可以直接寫判斷條件,現(xiàn)在的條件成立耐床,于是運行結(jié)果如下:
2密幔、字符串使用
如果想把變量作為一個字符串的一部分,可以直接這樣寫
運行結(jié)果如下:
實際上默認情況下RF里的變量都是字符型的撩轰,并且兩個字符串連接不要加什么符號胯甩,直接連起來就行了昧廷。
如果你寫成aaa+${text}bbb,最終結(jié)果就是aaa+8866bbb偎箫,他會把你寫的任何內(nèi)容都當作字符串的木柬。
3、參與運算
看了上面的例子之后淹办,可能有人說我想用123作為數(shù)值進行計算該怎么用眉枕。
這里要用到一個關(guān)鍵字Evaluate。先看個例子:
運行結(jié)果如下:
他的作用是可以讓你加載Python的一些庫怜森,依賴于Python的語法速挑,相當于直接運行對應(yīng)的Python語句得到結(jié)果。
像上面的例子沒有加載庫塔插,因為加減乘除這些是Python基本庫就有的梗摇。下面放一個加載Python庫的拓哟,如下圖想许,他加載了random和sys兩個庫,并使用相應(yīng)的語句生成一個隨機數(shù)断序。
運行結(jié)果:
具體可以參考一下RF的userguide文檔中BuiltIn部分流纹。
介紹List Variables-List變量及其用法。
一违诗、List變量及其用法
在我們前面幾篇文章里用到了很多List變量漱凝,相信以后各位也會碰到需要使用的地方。
1诸迟、List變量賦值
和Scalar類似的賦值茸炒,除了用Set Variable還可以用Create List。
運行一下:
2阵苇、List變量使用
在使用上要注意看關(guān)鍵字的參數(shù)到底是Scalar的還是List壁公,區(qū)別就是看變量名前面是否有 ***** (星號),如圖:
這個關(guān)鍵字:
name就是支持傳入Scalar型的參數(shù)
args就是支持可以傳入List型值的绅项。
所謂List型值其實是說支持多個值紊册,即不確定個數(shù)的,List-like一樣的值快耿,如下圖的2囊陡、3行:
運行一下:
當然,并不是說沒有星號的就不能用List的掀亥,只要是多個變量就可以用List傳值撞反。
像Log這個關(guān)鍵字,他有2個Scalar型的傳入?yún)?shù)搪花,如果我想傳List也是可以的遏片,但是必須是一個有2個元素的List垛膝,因為Log的第二個參數(shù)有默認值,所以如果你傳入1個元素的List也是可以的丁稀,但是如果傳入3個元素的List吼拥,那么就會報錯了。
運行結(jié)果:
你可以寫成上面這樣线衫,但是我并不推薦這種做法凿可,這里只是為了講解List的作用而做的示范。
綜上授账,對于有多個參數(shù)的關(guān)鍵字枯跑,你可以按照需要傳入多個Scalar變量,也可以傳入List變量白热,根據(jù)你自己的需要選擇合適的方式敛助。
二、變量轉(zhuǎn)換
之前提過了Scalar變量用 $ 作為標識符屋确,List型變量用 @ 作為標識符纳击,而且他們是可以進行轉(zhuǎn)換的,理論上可以互相進行轉(zhuǎn)換攻臀,但是也有一點限制焕数。
1、List變量轉(zhuǎn)換成Scalar
這種轉(zhuǎn)換的效果是把整個List變成一個Scalar刨啸,我覺得作用主要是對于那些只接收Scalar變量參數(shù)的關(guān)鍵字堡赔,而你又想傳List的全部值的時候,或者其他你需要的把List當作Scalar的情況下使用设联。
例如Fail關(guān)鍵字善已,他的msg這個參數(shù)只能接收Scalar變量。
如果你想用Fail离例,把f這個變量的值都打出來换团,下面這樣寫是肯定會報錯的。
報錯信息為 Keyword 'BuiltIn.Fail' expected 0 to 1 arguments, got 3.
那么我們轉(zhuǎn)換一下粘招,這樣寫就不報錯了啥寇。
運行結(jié)果:
2、Scalar變量轉(zhuǎn)換成List
其實以前介紹用戶關(guān)鍵字的時候也演示過洒扎,對于返回值是List的關(guān)鍵字辑甜,如果你給要賦值的變量寫的是Scalar的,他會自動把他變成List的袍冷。
還是上面這個例子磷醋,我們把@{f}改成${f}
這樣也是OK的。
【Question】這里沒懂如何就成功發(fā)生轉(zhuǎn)換了胡诗。
3邓线、轉(zhuǎn)換的限制
但是淌友,轉(zhuǎn)換是有一點限制的。
首先骇陈,變量要進行賦值(類似于初始化)之后才能使用震庭,如果沒有進行過賦值的RIDE里會有顏色提示,用一個前面的圖
圖中的紫色${f}就是提示你他沒有進行過賦值你雌,此時而系統(tǒng)會默認他就是@{f}的Scalar形式器联,這個可以看上面的執(zhí)行結(jié)果。
那么這個限制就在Scalar轉(zhuǎn)換成List的地方婿崭,系統(tǒng)會默認${f}是@{f}的Scalar形式拨拓,但是他并不會默認@{f}是${f}的list形式,即使${f}已經(jīng)是list了氓栈。
看一下例子:
這樣寫的話運行就會報錯:Non-existing variable '@{f}'.
那這時候${f}有什么用呢渣磷?除了前面介紹的作為Scalar型變量,值是所有元素授瘦,還可以根據(jù)index直接獲得某個元素醋界。
例如:
運行結(jié)果:
看完上面的限制之后,還要補充一點奥务,系統(tǒng)會默認${f}是@{f}的Scalar形式物独,這個也是有限制袜硫,必須是${f}沒有被賦值過的情況氯葬,如果${f}被賦值過是什么情況呢?
看看例子:
你覺得${f}會是什么值呢婉陷?
【Question】這里跟教程的截圖帚称,返回結(jié)果不一致了。有點蒙秽澳,理解還沒到位闯睹。
下面是教程給出的答案:
所以,這里要注意担神,盡量不要讓Scalar和List的變量重名楼吃,特別是你要用作不同的用途的時候。
一個重要的影響就是會導(dǎo)致下面的List元素獲取出現(xiàn)越界的情況妄讯。
三孩锡、List元素的獲取
List元素的獲取只有一種方式,無論是一維List還是二維List亥贸,都是用${變量名[index]}躬窜,就是用$的變量,在變量名后面加上方括號炕置,里面是序號荣挨。
1男韧、一維List的例子
運行:
2、二維List的例子
運行結(jié)果:
如果log后面只寫${f[1]}默垄,那么得到的結(jié)果如圖:
參考文章給出的運行結(jié)果:
總之此虑,就是用方括號來表明你需要的元素,如果是多維List口锭,要想清楚你到底要哪層的寡壮,不要寫少了或者寫多了。
【Question】這運行結(jié)果不一致讹弯,真是令人困擾况既。。组民。