(12)Robot Framework的Scalar變量$和List變量@

轉(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來新增變量军援。

image.png

實際上也可以看做另一種形式的變量賦值仅淑,一般相當于使用Set Variable進行初始化賦值。

可以Import需要用到得Library

3胸哥、變量賦值

賦值也是有幾種的涯竟,根據(jù)自己的需求進行處理吧。

1)Set 賦值

通常這種方式主要使用Set Variable或類似的使用了Set的關(guān)鍵字對變量進行賦值。例如:

image.png

2)Get 賦值

主要用于返回值上庐船,包括系統(tǒng)關(guān)鍵字的返回值和用戶關(guān)鍵字的返回值(從廣義上說银酬,Set那個也是返回值),例如:

image.png

之前的用戶關(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磷斧、在判斷中使用

image.png

例如這樣寫假消,在第二行的判斷中可以直接寫判斷條件,現(xiàn)在的條件成立耐床,于是運行結(jié)果如下:

image.png

2密幔、字符串使用

如果想把變量作為一個字符串的一部分,可以直接這樣寫

image.png

運行結(jié)果如下:

image.png

實際上默認情況下RF里的變量都是字符型的撩轰,并且兩個字符串連接不要加什么符號胯甩,直接連起來就行了昧廷。

如果你寫成aaa+${text}bbb,最終結(jié)果就是aaa+8866bbb偎箫,他會把你寫的任何內(nèi)容都當作字符串的木柬。

3、參與運算

看了上面的例子之后淹办,可能有人說我想用123作為數(shù)值進行計算該怎么用眉枕。

這里要用到一個關(guān)鍵字Evaluate。先看個例子:

image.png

運行結(jié)果如下:

image.png

他的作用是可以讓你加載Python的一些庫怜森,依賴于Python的語法速挑,相當于直接運行對應(yīng)的Python語句得到結(jié)果。

像上面的例子沒有加載庫塔插,因為加減乘除這些是Python基本庫就有的梗摇。下面放一個加載Python庫的拓哟,如下圖想许,他加載了random和sys兩個庫,并使用相應(yīng)的語句生成一個隨機數(shù)断序。

image.png

運行結(jié)果:

image.png

具體可以參考一下RF的userguide文檔中BuiltIn部分流纹。


介紹List Variables-List變量及其用法。

一违诗、List變量及其用法

在我們前面幾篇文章里用到了很多List變量漱凝,相信以后各位也會碰到需要使用的地方。

1诸迟、List變量賦值

和Scalar類似的賦值茸炒,除了用Set Variable還可以用Create List。

image.png

運行一下:

image.png

2阵苇、List變量使用

在使用上要注意看關(guān)鍵字的參數(shù)到底是Scalar的還是List壁公,區(qū)別就是看變量名前面是否有 ***** (星號),如圖:

image.png

這個關(guān)鍵字:

name就是支持傳入Scalar型的參數(shù)

args就是支持可以傳入List型值的绅项。

所謂List型值其實是說支持多個值紊册,即不確定個數(shù)的,List-like一樣的值快耿,如下圖的2囊陡、3行:

image.png

運行一下:

image.png

當然,并不是說沒有星號的就不能用List的掀亥,只要是多個變量就可以用List傳值撞反。

image.png

像Log這個關(guān)鍵字,他有2個Scalar型的傳入?yún)?shù)搪花,如果我想傳List也是可以的遏片,但是必須是一個有2個元素的List垛膝,因為Log的第二個參數(shù)有默認值,所以如果你傳入1個元素的List也是可以的丁稀,但是如果傳入3個元素的List吼拥,那么就會報錯了。

image.png

運行結(jié)果:

image.png

你可以寫成上面這樣线衫,但是我并不推薦這種做法凿可,這里只是為了講解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變量。

image.png

如果你想用Fail离例,把f這個變量的值都打出來换团,下面這樣寫是肯定會報錯的。

image.png

運行結(jié)果:
image.png

報錯信息為 Keyword 'BuiltIn.Fail' expected 0 to 1 arguments, got 3.

那么我們轉(zhuǎn)換一下粘招,這樣寫就不報錯了啥寇。

image.png

運行結(jié)果:

image.png

2、Scalar變量轉(zhuǎn)換成List

其實以前介紹用戶關(guān)鍵字的時候也演示過洒扎,對于返回值是List的關(guān)鍵字辑甜,如果你給要賦值的變量寫的是Scalar的,他會自動把他變成List的袍冷。

還是上面這個例子磷醋,我們把@{f}改成${f}

image.png

這樣也是OK的。

【Question】這里沒懂如何就成功發(fā)生轉(zhuǎn)換了胡诗。

3邓线、轉(zhuǎn)換的限制

但是淌友,轉(zhuǎn)換是有一點限制的。

首先骇陈,變量要進行賦值(類似于初始化)之后才能使用震庭,如果沒有進行過賦值的RIDE里會有顏色提示,用一個前面的圖

image.png

圖中的紫色${f}就是提示你他沒有進行過賦值你雌,此時而系統(tǒng)會默認他就是@{f}的Scalar形式器联,這個可以看上面的執(zhí)行結(jié)果。

那么這個限制就在Scalar轉(zhuǎn)換成List的地方婿崭,系統(tǒng)會默認${f}是@{f}的Scalar形式拨拓,但是他并不會默認@{f}是${f}的list形式,即使${f}已經(jīng)是list了氓栈。

看一下例子:

image.png

這樣寫的話運行就會報錯:Non-existing variable '@{f}'.

那這時候${f}有什么用呢渣磷?除了前面介紹的作為Scalar型變量,值是所有元素授瘦,還可以根據(jù)index直接獲得某個元素醋界。

例如:

image.png

運行結(jié)果:

image.png

看完上面的限制之后,還要補充一點奥务,系統(tǒng)會默認${f}是@{f}的Scalar形式物独,這個也是有限制袜硫,必須是${f}沒有被賦值過的情況氯葬,如果${f}被賦值過是什么情況呢?

看看例子:

image.png

你覺得${f}會是什么值呢婉陷?

image.png

【Question】這里跟教程的截圖帚称,返回結(jié)果不一致了。有點蒙秽澳,理解還沒到位闯睹。

下面是教程給出的答案:

image.png

所以,這里要注意担神,盡量不要讓Scalar和List的變量重名楼吃,特別是你要用作不同的用途的時候。

一個重要的影響就是會導(dǎo)致下面的List元素獲取出現(xiàn)越界的情況妄讯。

三孩锡、List元素的獲取

List元素的獲取只有一種方式,無論是一維List還是二維List亥贸,都是用${變量名[index]}躬窜,就是用$的變量,在變量名后面加上方括號炕置,里面是序號荣挨。

1男韧、一維List的例子

image.png

運行:

image.png

2、二維List的例子

image.png

運行結(jié)果:

image.png

如果log后面只寫${f[1]}默垄,那么得到的結(jié)果如圖:

image.png

參考文章給出的運行結(jié)果:

image.png

總之此虑,就是用方括號來表明你需要的元素,如果是多維List口锭,要想清楚你到底要哪層的寡壮,不要寫少了或者寫多了。

【Question】這運行結(jié)果不一致讹弯,真是令人困擾况既。。组民。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棒仍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子臭胜,更是在濱河造成了極大的恐慌莫其,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸三,死亡現(xiàn)場離奇詭異乱陡,居然都是意外死亡,警方通過查閱死者的電腦和手機仪壮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門憨颠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人积锅,你說我怎么就攤上這事爽彤。” “怎么了缚陷?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵适篙,是天一觀的道長。 經(jīng)常有香客問我箫爷,道長嚷节,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任虎锚,我火速辦了婚禮硫痰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翁都。我一直安慰自己碍论,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布柄慰。 她就那樣靜靜地躺著鳍悠,像睡著了一般税娜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藏研,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天敬矩,我揣著相機與錄音,去河邊找鬼蠢挡。 笑死弧岳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的业踏。 我是一名探鬼主播禽炬,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勤家!你這毒婦竟也來了腹尖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤伐脖,失蹤者是張志新(化名)和其女友劉穎热幔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讼庇,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡绎巨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蠕啄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片场勤。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖介汹,靈堂內(nèi)的尸體忽然破棺而出却嗡,到底是詐尸還是另有隱情,我是刑警寧澤嘹承,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站如庭,受9級特大地震影響叹卷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坪它,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一骤竹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧往毡,春花似錦蒙揣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罩息。三九已至,卻和暖如春个扰,著一層夾襖步出監(jiān)牢的瞬間瓷炮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工递宅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娘香,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓办龄,卻偏偏與公主長得像烘绽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子俐填,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 我們新建一個案例诀姚,并針對用戶關(guān)鍵字的用法進行介紹。 1玷禽、先新建一個用戶關(guān)鍵字赫段,不用帶arguments。 在Set...
    哇哈哈E閱讀 8,367評論 0 4
  • 〇矢赁、前言 本文共108張圖糯笙,流量黨請慎重! 歷時1個半月撩银,我把自己學習Python基礎(chǔ)知識的框架詳細梳理了一遍给涕。 ...
    Raxxie閱讀 18,928評論 17 410
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,370評論 0 5
  • 一、變量的使用 變量可以在命令行中設(shè)置额获,個別變量設(shè)置使用--variable (-v)選項够庙,變量文件的選擇使用--...
    keitwo閱讀 1,715評論 0 0
  • 這里耘眨,我想結(jié)合心理學家Dwreck在TED演講中提到的“固定型”心態(tài)和“成長型”心態(tài)來談我對底層觀念的看法。 “成...
    彭二grit閱讀 2,141評論 3 2