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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Robot Framework--06 用户关键字User Keyword

發(fā)布時間:2025/7/25 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Robot Framework--06 用户关键字User Keyword 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://blog.csdn.net/tulituqi/article/details/7906130

?

在我們做自動化案例的時候,用的最多的主要是用戶關(guān)鍵字。說到關(guān)鍵字,大體上可以分為測試庫關(guān)鍵字(或叫系統(tǒng)關(guān)鍵字)和用戶關(guān)鍵字,前者一般都是通過加載Library得到的,而用戶關(guān)鍵字一般都是通過加載Resouce得到的。

以之前的這個case為例:

圖中的Import Variables和log都是測試庫關(guān)鍵字,而搜索測試這個就是用戶關(guān)鍵字,只要RIDE的版本高一些,就能看出他們的顏色是有區(qū)別的。

?

接下來,我們新建一個案例,并針對用戶關(guān)鍵字的用法進行介紹。

1、先新建一個用戶關(guān)鍵字,不用帶arguments。

在Setting下面的這些呢,Documentation就不多說了。主要看下面4個設(shè)置,其實前面的文章里也簡單介紹過,這里再說一下。

Arguments: 設(shè)置傳入?yún)?shù)

Teardown: 設(shè)置完成時的動作,比如寫上Close All Browsers,表示在這個用戶關(guān)鍵字執(zhí)行完成之后會執(zhí)行什么關(guān)鍵字。

Timeout: 設(shè)置超時時間,如寫上1min,表示1分鐘超時,如果這個關(guān)鍵字執(zhí)行超過1分鐘則認(rèn)為失敗。

Return Value: 設(shè)置返回值

?

一直以來我都覺得用戶關(guān)鍵字就像一個函數(shù)一樣,有傳入?yún)?shù)Arguments,有返回值Return Value,而且還可以用Teardown作為函數(shù)完成后的清理動作。

所以我們也要像函數(shù)一樣來使用User Keyword。

?

2、傳入?yún)?shù)Arguments

前面在做案例分層的時候其實已經(jīng)用到了一些參數(shù)設(shè)置了,可以看看前面2篇文章。這里提一下多參數(shù)及可選參數(shù)的設(shè)置。

?

??? 0)變量類型

順帶提一下變量的類型,RF里的變量分兩種,一種是Scalar,可以理解為單值變量,一種是List Variable,list型變量,或者可以理解為數(shù)組變量。Scalar型變量用$符號開頭,List型變量用@符號開頭。這里只是簡單介紹,后面會專門寫一篇兩種變量關(guān)系的。

?

??? 1)必填參數(shù)

給我們的關(guān)鍵字先添加4個參數(shù),參數(shù)之間使用 |? 進行分隔。(如果想在默認(rèn)值里使用 | 作為一個值而不是分隔符,那么就要使用 \| 來表示|的值。

?

如果是這樣添加參數(shù)呢,表示這些參數(shù)都是必填的,我們建一個case3,并調(diào)用關(guān)鍵字測試看一下,這里的關(guān)鍵字測試后面的4個格子都是紅色,提示參數(shù)必填。

?

??? 2)選填參數(shù)

假設(shè)我們想把其中第2個參數(shù)設(shè)成選填參數(shù),選填參數(shù)就是給參數(shù)加上默認(rèn)值,默認(rèn)值使用 =? 加上值,如果想默認(rèn)為空,只寫等號就行了。

(默認(rèn)值的意思不需要細(xì)講了哈,就是如果你在調(diào)用這個關(guān)鍵字的時候,如果不給這個選填參數(shù)傳值,那么就使用默認(rèn)值作為參數(shù)的值)

如果我們直接這樣加的話,點擊OK就會報錯。意思是說必填參數(shù)不允許在選填參數(shù)后面。

也就是說如果某一個參數(shù)設(shè)置成了選填參數(shù),那么他后面的參數(shù)都必須是選填參數(shù),不能是必填參數(shù)。

在我們這里就是第2個參數(shù)如果要可選,要么把3、4參數(shù)也都設(shè)置上默認(rèn)值,要么就把第2個參數(shù)調(diào)整到最后去。我先調(diào)整成下面這樣,就不會報錯了。

?

??? 3)List變量參數(shù)

List變量也是可以作為參數(shù),但是List變量只能放在最后一位。如果放在前面,就會報錯。

我把arg4改成了@{arg4}這樣的List變量,保存時就會提示List變量只能作為最后一個參數(shù)。

為啥只能是最后一個呢?從英文的角度看是the last argument,沒有s。。。。

如果一定要試試最后2個都放list變量呢,也是會報錯的。

?

這是為什么呢?首先,List變量本來來說,他是一個可變的,即List的成員數(shù)量不確定。而List作為參數(shù)的話,有幾個成員就是相當(dāng)于幾個單值參數(shù),他實際上是提供了一種參數(shù)個數(shù)可變的方式。那么既然可變,如果放在前面的話(見第一個例子的圖),他就沒法確定傳入的參數(shù)到底哪些是給arg4的,哪個是給arg2的了;同理,如果放2個List也是不行的(見第二個例子的圖),因為也是無法區(qū)分傳入的參數(shù)到底哪些是給arg4,哪些是給arg2。

而且2個可變和1個可變沒什么差別滴,所以最終限定是只能有1個List參數(shù),并且必須放在最后

?

注意一下:變量名和等號間不能有空格,如果有空格系統(tǒng)會報參數(shù)語法錯誤

?

最后看一下List參數(shù)的實例,其他幾種實例應(yīng)該沒什么復(fù)雜的,大家自己練習(xí)一下即可。

為了看的方便,我把參數(shù)數(shù)量減少點,只放2個參數(shù),${arg1} | @{arg2},然后用了個Fail,目的是想把值打印在運行界面上。

?

然后我們在case3里給他傳幾個值。

我特意把關(guān)鍵字的說明也截圖下來,大家可以看到agr2前面有個*,表示他可以接受任意個參數(shù),Python里其實也是這樣處理多參數(shù)的。

運行一下案例,看一下打印出來的內(nèi)容。

?

繼續(xù)介紹User Keyword里面的Teardown和Return Value的內(nèi)容

?

3、Teardown測試完成回收清理

如果有用過Junit的朋友應(yīng)該記得Junit的案例一般都是有一個Setup、一個Test、一個Teardown的,同樣我們的TestCase也是有這2個的,大家可以自己看一下case的Setting。

那么這個User Keyword的Teardown,作用都是差不多的,如果是Case的Teardown,那么是案例結(jié)束的時候做回收清理;而User Keyword的Teardown就是用在調(diào)用User Keyword完成之后才會做的數(shù)據(jù)回收清理。

當(dāng)然,用于什么可以根據(jù)你自己的需求自己調(diào)整,并不一定是數(shù)據(jù)回收清理,是系統(tǒng)關(guān)鍵字或者用戶關(guān)鍵字都可以。總之可以理解為關(guān)鍵字完成后還要調(diào)一個關(guān)鍵字。參數(shù)要用 | 分隔。

我這里改造一下上一篇寫的關(guān)鍵字測試,以便于演示Teardown的作用。

改完的效果是先把arg1的值賦給temp,然后把arg2的列表第三項值賦給arg1(這里算個小bug,如果傳的參數(shù)少于3個就會報錯了,這里只是演示,請忽略),然后log打印出arg1和arg2的值。

在Teardown這里我使用了Set Suite Variable方法,把temp的值覆蓋arg1,并把arg1設(shè)為Suite級別的變量,然后我再case3里調(diào)用完關(guān)鍵字測試后又用log打印出arg1的值。(也可以用Set Global Variable,如果不用這2個的話,在case3里是找不到arg1這個變量的)

?

接著我們執(zhí)行一下案例,看看報告。

如上面所說,首先把arg1的值111賦給了temp,然后又把arg2的第3個值444賦給了arg1,最后再把temp的值賦給arg1。

我這個就算是一種清理吧,讓參數(shù)的值在關(guān)鍵字內(nèi)部發(fā)生變化,在Teardown的時候把他的值恢復(fù)回來。

?

Teardown這里只能寫一行語句,如果你要執(zhí)行多行語句的話,那最好是再專門寫一個關(guān)鍵字,然后在Teardown這里調(diào)用這個新增的關(guān)鍵字。

?

4、Return Value返回值

這個應(yīng)該不用怎么解釋了,只是說說用法,因為我們傳入?yún)?shù)的時候可以用單值變量,也可以用List變量,那么在Return Value的時候也是可以用單值變量和List變量的。

下面分別用一個例子來說明吧。

?

??? 1)單個單值變量返回

我把arg1放到Return Value里了,因為我挺想看看是先Return還是先Teardown,不過我覺得應(yīng)該還是先Return,順便驗證一下。

在case3里,我們用一個變量arg5獲取這個返回值,然后打印出來。其他的代碼都不動。

運行之后,我們看一下日志打印的效果。

看來還是我猜錯了,是在Teardown之后才Return的,大家可以看到我標(biāo)記的地方,是先執(zhí)行了給arg1賦值111,然后又把這個arg1返回給了arg5,所以arg5的值也是111。我本來還以為應(yīng)該是444的,所以這里大家也要注意一下。

?

這種單個單值變量返回的是一種比較普遍的,后面幾種稍微少見一些,但是也比較有用處。

?

??? 2)多個單值變量返回

在設(shè)置返回值的時候可能大家已經(jīng)看到了,這里是支持多個變量返回的,也是用 | 分隔的。

????? 2.1)這里我們繼續(xù)改造,再增加一個變量的值返回。

?

同樣的,我們在case3那里也要做一下相應(yīng)的修改,當(dāng)然不修改也可以,這里就會比較自由了。我們先看看不改的。圖和上面的case3一樣,我們直接看執(zhí)行的結(jié)果。

雖然我們用的是${arg5},但是因為返回了2個值,他自動的轉(zhuǎn)換成了list(這也是下一篇我們會講的變量互換)。

?

????? 2.2)那么可能有人覺得這里返回的是list,我們最好用list變量來接收,那么我們把第一個${arg5}改成@{arg5},再運行一下,看看結(jié)果

差別基本不大,只是在與${arg5}和@{arg5}的顯示不同。

?

????? 2.3)那么還有一個方式,因為我們知道有2個返回值,所以可以用2個變量來獲取值。

接著運行一下,看看日志

這樣可以直接使用對應(yīng)的變量了。

?

上面的3種方式前兩種差不多一樣,第三種是最好能知道返回值的個數(shù),這樣可以一一對應(yīng),如果不一樣怎么辦呢?

A:返回值個數(shù)大于取值變量個數(shù)。

實際上在2.1里已經(jīng)有了一個類似的,${arg5}會自動轉(zhuǎn)為list。這是只有一個取值的變量,那么我們試試多個的。

在case3里還是用2個變量取值,運行一下看看結(jié)果。

他會先把第一個值給了arg5,然后把后面的值給了arg6,于是arg6變成了list變量。

所以可以得出結(jié)論,對于多個取值變量的個數(shù)少于返回值的個數(shù),他會先把前面的值一一對應(yīng)的給前面的取值變量賦值,這些變量仍然是單值變量,而最后一個變量會轉(zhuǎn)成list變量接收剩下的值。

?

B:返回值個數(shù)小于取值變量個數(shù)。

我們把return value改成只有一個${arg1},然后運行一下,看看結(jié)果。

這種就會報錯了,因為只傳回來一個值,而這里期待的是多個值,list-like的像list的變量。

?

因此,知道返回值的個數(shù)比較重要,如果不確定返回值的個數(shù),如同接下來的那種情況,最好使用list變量或單個變量來取值,避免出現(xiàn)返回值個數(shù)少于取值變量個數(shù)的情況。

?

??? 3)list變量返回

因為list變量本身就是不確定有多少個成員,所以對于這種返回值,最好使用list變量或單個變量來取值(即2.1和2.2的用法)。那么返回值里返回1個list還是多個list都無所謂了,因為他還會組裝成一個大的list。

稍微改造一個復(fù)雜的:

返回值里我們放了一個list變量加上一個單值變量再加上一個list變量,而在case3里的取值就用1個變量就可以了。

最后運行一下,查看結(jié)果。


***微信掃一掃,關(guān)注“python測試開發(fā)圈”,了解更多測試教程!***

轉(zhuǎn)載于:https://www.cnblogs.com/guanfuchang/p/4051741.html

總結(jié)

以上是生活随笔為你收集整理的Robot Framework--06 用户关键字User Keyword的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。