1、自定義的庫(kù)
創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站制作、成都做網(wǎng)站與策劃設(shè)計(jì),福鼎網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:福鼎等地區(qū)。福鼎做網(wǎng)站價(jià)格咨詢:18982081108
2、使用自定義庫(kù)
類或者模塊的形式。
模塊名稱 = 庫(kù)名。
模塊名稱和類名保持一致 = 庫(kù)名
如果是類:ROBOT_LIBRARY_SCOPE = "GLOBAL"
使用:
Library 庫(kù)名-相對(duì)路徑
按照其他庫(kù)的關(guān)鍵字調(diào)用方式一樣。
創(chuàng)建測(cè)試庫(kù)類/模塊
靜態(tài)(Static)API
最簡(jiǎn)單的辦法是實(shí)現(xiàn)一個(gè)模塊(用Python),或者類(用Python或Java),其中的方法(methods)直接映射為關(guān)鍵字名稱。關(guān)鍵字接受和方法相同的參數(shù)。
創(chuàng)建測(cè)試庫(kù)類或模塊
測(cè)試庫(kù)的實(shí)現(xiàn)可以是Python模塊,也可以是Python或Java類。
如果是Python模塊,使用 all? =['函數(shù)名稱']來(lái)指定哪些函數(shù)是你想要被RF識(shí)別為關(guān)鍵字的。
參看RF自帶庫(kù)DateTime
python類的可參看String庫(kù)、seleniumLibrary庫(kù)等。
通過(guò)屬性ROBOT_LIBRARY_SCOPE來(lái)控制
這個(gè)屬性是一個(gè)字符串,可以有以下三種取值:
TEST CASE
為每個(gè)測(cè)試用例創(chuàng)建新的實(shí)例。如果有suite setup和suite teardown的話,同樣也會(huì)新建。這是默認(rèn)行
TEST SUITE
為每個(gè)測(cè)試集創(chuàng)建新的實(shí)例,最底層的測(cè)試集,也就是有測(cè)試用例文件組成的測(cè)試集,擁有屬于自己的測(cè)試庫(kù)實(shí)例,高層的測(cè)試集,都有屬于自己的測(cè)試庫(kù)實(shí)例。
GLOBAL(最常用)
整個(gè)測(cè)試執(zhí)行過(guò)程中只有一個(gè)實(shí)例被創(chuàng)建。所有的測(cè)試集合測(cè)試用例共享這個(gè)實(shí)例。通過(guò)模塊創(chuàng)建的測(cè)試庫(kù)都是全局的。
注解
如果一個(gè)測(cè)試庫(kù)被導(dǎo)入多次,每次使用不同的參數(shù),則不管有沒(méi)有定義作用域,每次都會(huì)新建一個(gè)實(shí)例。
如果是命令行的,一般是捕獲ctrl-c事件吧。importsignalimportsysdefsignal_handler(signal,frame):print('YoupressedCtrl+C!')sys.exit(0)signal.signal(signal.SIGINT,signal_handler)print('PressCtrl+C')signal.pause()
Variable表中聲明變量
資源文件里面創(chuàng)建變量
和套件文件中的用戶關(guān)鍵字一樣,套件文件中的變量表里面的變量,其作用范圍只是該套件文件。我們可以定義在資源文件中。資源文件變量的定義,和上述測(cè)試套件文件中幾乎一樣,我們只需拷貝Variables表到資源文件中即可,注意資源文件中不可存在*** Test Cases ***測(cè)試用例。
rc.robot 資源文件
test.robot 測(cè)試套件
變量文件
也可以使用python模塊文件提供公共變量給RF使用。只需要直接定義變量就可以了
語(yǔ)法完全就是python 例如:
變量文件聲明的時(shí)候,可以使用絕對(duì)路徑,也可以使用相對(duì)路徑。使用相對(duì)路徑的時(shí)候,RF搜索變量文件規(guī)則和搜索資源文件搜索規(guī)則一樣:
首先在當(dāng)前文件的目錄匹配收縮,如果找不到,就在Python的模塊搜索路徑中搜索
上面的*** Settings ***變量文件路徑是這樣寫(xiě)的 Variables ./rf/rc.py
是因?yàn)閞c.py所處的路徑是這樣的,如下圖
但是這樣不好的地方是:
每個(gè)RF文件的路徑不一樣,導(dǎo)致每個(gè)RF文件導(dǎo)入變量文件的寫(xiě)法都不同,而且一旦移動(dòng)了目錄,就要修改里面的寫(xiě)法,比如
Variables ./rf/rf/rc.py
一種推薦的做法就是統(tǒng)一相對(duì)于項(xiàng)目根目錄,假設(shè)項(xiàng)目根目錄是rf,就需要像下面這樣
也可以在命令行參數(shù)中直接指定變量文件,就可以不用在RF中聲明了
擴(kuò)展關(guān)鍵字
使用python測(cè)試庫(kù),模塊文件名就是測(cè)試庫(kù)的名字
定義在python模塊中的函數(shù),名稱前有_前綴的不會(huì)作為關(guān)鍵字。
Python模塊定義好以后,RF就可以使用它了,我們可以這樣使用上面定義的測(cè)試庫(kù),要注意的是,要保證其在Python模塊的搜索路徑中,這樣RF才能找到它
RF在使用關(guān)鍵字的時(shí)候,中間可以加上任意的空格,并且大小寫(xiě)也可以任意
自己定義關(guān)鍵字名字 _hehe不會(huì)作為關(guān)鍵字被rf使用
python類作為測(cè)試庫(kù)
tlib2.py
庫(kù)的搜索規(guī)則
RF搜索庫(kù)完全是按照python的模塊的搜索規(guī)則來(lái)的
如果python庫(kù)是在一個(gè)包中,比如
pylib/login/rightpass.py
聲明的時(shí)候,可以在RF文件像python導(dǎo)入包里面的模塊那樣的語(yǔ)法,如下
*** Settings ***
Library pylib/login/rightpasswd.py
如果導(dǎo)入的庫(kù)中存在模塊的引入,引入的模塊要以加入pythonpath的路徑來(lái)寫(xiě)否則會(huì)報(bào)錯(cuò)
如果存在繼承的情況,只要導(dǎo)入子類就可使用父類的方法,要注意模塊導(dǎo)入時(shí)的路徑。
父類
子類
robot用例
總結(jié)如下:
1.在settings中聲明資源文件和變量文件:
路徑,目錄之間的分隔符用斜杠 / 而不是點(diǎn) .
2.在settings中聲明測(cè)試庫(kù):
路徑,目錄之間的分隔符,可以用點(diǎn) . 也可以用斜杠 /
路徑,目錄之間的分隔符用點(diǎn)后面不加py,用斜杠后面加.py
關(guān)鍵字的使用
RF的能力是由關(guān)鍵字提供的,所以我們必須對(duì)RF的常用關(guān)鍵字有個(gè)了解,這樣才能把RF用好
常用的RF關(guān)鍵字就在RF的標(biāo)準(zhǔn)庫(kù)中
關(guān)鍵字參數(shù)
第一列是關(guān)鍵字的名稱
第2列是關(guān)鍵字的參數(shù)
常用關(guān)鍵字
set variable 只支持賦值一個(gè)字符串給變量,如果我們想賦值一個(gè)整數(shù),或者浮點(diǎn)數(shù),需要用Convert To integer Convert To Number
如果我們想把一個(gè)數(shù)字作為關(guān)鍵字的參數(shù),可以使用數(shù)字變量
Should be true 與python兩個(gè)區(qū)別:
1.變量前面加個(gè)$符號(hào)
2.不能中間有多于兩個(gè)空格
認(rèn)識(shí)測(cè)試庫(kù)
通常,關(guān)鍵字是由測(cè)試哭提供的。其實(shí)測(cè)試庫(kù)就是python模塊文件。
關(guān)鍵字就是python庫(kù)里面的函數(shù)和類的方法。
RF本事就是python程序,所以它的尋找?guī)煳募脑砗蚿ython是一樣的。最終是通過(guò)sys.path
我們?cè)谀膫€(gè)目錄下面運(yùn)行robot,哪個(gè)目錄就是當(dāng)前工作目錄當(dāng)前工作目錄就是在sys.path里面的。所以我們房子啊當(dāng)前目錄下面的python模塊文件,直接就能被找到
RF腳本使用函數(shù)名、方法名、大小寫(xiě)不敏感
庫(kù)的導(dǎo)入
要使用測(cè)試哭提供的關(guān)鍵字,我們必須要聲明導(dǎo)入庫(kù)當(dāng)然一個(gè)特例:除了RF的builtin庫(kù)的關(guān)鍵字,不需要聲明。
庫(kù)的名稱在RF里面是大小寫(xiě)敏感的。
有的庫(kù),在導(dǎo)入的時(shí)候,可以提供參數(shù),比如SeleniumLIbrary
importing 鏈接,點(diǎn)開(kāi),有參數(shù)就是導(dǎo)入可以設(shè)置的參數(shù)
timeout=5.0
run_on_faullure=Capture Page Screenshot
screenshot_root_directory=None
其實(shí)這些導(dǎo)入時(shí)帶參數(shù)的庫(kù),對(duì)應(yīng)的測(cè)試庫(kù)都是用類實(shí)現(xiàn)的
這些參數(shù)就是類的初始化方法init里面的參數(shù)
變量的用法
RF中的變量,實(shí)質(zhì)上就是一個(gè)python變量,他只想一個(gè)python對(duì)象。
所以RF的變量對(duì)應(yīng)的是什么Python對(duì)象,他就是什么類型的對(duì)象
循環(huán)
RF用:FOR來(lái)實(shí)現(xiàn)循環(huán),沒(méi)有while循環(huán)
對(duì)應(yīng)的文檔解釋在這里
:FOR \ 為舊語(yǔ)法 、
FOR END為新語(yǔ)法
range用法
python中,我們常常用到range方法,RF也有類似的支持
網(wǎng)站題目:rf使用python函數(shù)的簡(jiǎn)單介紹
當(dāng)前網(wǎng)址:http://chinadenli.net/article20/hgdhco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、建站公司、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、微信公眾號(hào)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)