Robot Framework--08 List Variables-List變量及其用法


轉自:http://blog.csdn.net/tulituqi/article/details/7907981

一、List變量及其用法

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

1、List變量賦值

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

 

運行一下:

 

 

2、List變量使用

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

這個關鍵字的name就是支持傳入Scalar型的參數,*args就是支持可以傳入List型值的。

所謂List型值其實是說支持多個值,即不確定個數的,List-like一樣的值,如下圖的2、3行:

 

 

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

像Log這個關鍵字,他有2個Scalar型的傳入參數,如果我想傳List也是可以的,但是必須是一個有2個元素的List,因為Log的第二個參數有默認值,所以如果你傳入1個元素的List也是可以的,但是如果傳入3個元素的List,那么就會報錯了。

你可以寫成上面這樣,但是我並不推薦這種做法,這里只是為了講解List的作用而做的示范。

 

綜上,對於有多個參數的關鍵字,你可以按照需要傳入多個Scalar變量,也可以傳入List變量,根據你自己的需要選擇合適的方式。

 

二、變量轉換

之前提過了Scalar變量用 $ 作為標識符,List型變量用 @ 作為標識符,而且他們是可以進行轉換的,理論上可以互相進行轉換,但是也有一點限制。

1、List變量轉換成Scalar

這種轉換的效果是把整個List變成一個Scalar,我覺得作用主要是對於那些只接收Scalar變量參數的關鍵字,而你又想傳List的全部值的時候,或者其他你需要的把List當作Scalar的情況下使用。例如Fail關鍵字,他的msg這個參數只能接收Scalar變量。

 

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

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

那么我們轉換一下,這樣寫就不報錯了。

運行結果:

 

2、Scalar變量轉換成List

其實以前介紹用戶關鍵字的時候也演示過,對於返回值是List的關鍵字,如果你給要賦值的變量寫的是Scalar的,他會自動把他變成List的。

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

這樣也是OK的。

 

3、轉換的限制

但是,我前面提到了,轉換是有一點限制的。

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

圖中的紫色${f}就是提示你他沒有進行過賦值,此時而系統會默認他就是@{f}的Scalar形式,這個可以看上面的執行結果。

那么這個限制就在Scalar轉換成List的地方,系統會默認${f}是@{f}的Scalar形式,但是他並不會默認@{f}是${f}的list形式,即使${f}已經是list了。

看一下例子:

 

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

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

例如:

運行結果:

 

看完上面的限制之后,還要補充一點,系統會默認${f}是@{f}的Scalar形式,這個也是有限制,必須是${f}沒有被賦值過的情況,如果${f}被賦值過是什么情況呢?

看看例子:

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

 

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

一個重要的影響就是會導致下面的List元素獲取出現越界的情況。

 

三、List元素的獲取

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

1、一維List的例子。

運行:

 

2、二維List的例子。

運行結果:

如果log后面只寫${f[1]},那么得到的結果如圖:

 

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


***微信掃一掃,關注“python測試開發圈”,了解更多測試教程!***


免責聲明!

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



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