Variable表中聲明變量
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、成都品牌網(wǎng)站建設(shè)、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實(shí)力堅強(qiáng)的技術(shù)研發(fā)團(tuán)隊及素養(yǎng)的視覺設(shè)計專才。
資源文件里面創(chuàng)建變量
和套件文件中的用戶關(guān)鍵字一樣,套件文件中的變量表里面的變量,其作用范圍只是該套件文件。我們可以定義在資源文件中。資源文件變量的定義,和上述測試套件文件中幾乎一樣,我們只需拷貝Variables表到資源文件中即可,注意資源文件中不可存在*** Test Cases ***測試用例。
rc.robot 資源文件
test.robot 測試套件
變量文件
也可以使用python模塊文件提供公共變量給RF使用。只需要直接定義變量就可以了
語法完全就是python 例如:
變量文件聲明的時候,可以使用絕對路徑,也可以使用相對路徑。使用相對路徑的時候,RF搜索變量文件規(guī)則和搜索資源文件搜索規(guī)則一樣:
首先在當(dāng)前文件的目錄匹配收縮,如果找不到,就在Python的模塊搜索路徑中搜索
上面的*** Settings ***變量文件路徑是這樣寫的 Variables ./rf/rc.py
是因?yàn)閞c.py所處的路徑是這樣的,如下圖
但是這樣不好的地方是:
每個RF文件的路徑不一樣,導(dǎo)致每個RF文件導(dǎo)入變量文件的寫法都不同,而且一旦移動了目錄,就要修改里面的寫法,比如
Variables ./rf/rf/rc.py
一種推薦的做法就是統(tǒng)一相對于項目根目錄,假設(shè)項目根目錄是rf,就需要像下面這樣
也可以在命令行參數(shù)中直接指定變量文件,就可以不用在RF中聲明了
擴(kuò)展關(guān)鍵字
使用python測試庫,模塊文件名就是測試庫的名字
定義在python模塊中的函數(shù),名稱前有_前綴的不會作為關(guān)鍵字。
Python模塊定義好以后,RF就可以使用它了,我們可以這樣使用上面定義的測試庫,要注意的是,要保證其在Python模塊的搜索路徑中,這樣RF才能找到它
RF在使用關(guān)鍵字的時候,中間可以加上任意的空格,并且大小寫也可以任意
自己定義關(guān)鍵字名字 _hehe不會作為關(guān)鍵字被rf使用
python類作為測試庫
tlib2.py
庫的搜索規(guī)則
RF搜索庫完全是按照python的模塊的搜索規(guī)則來的
如果python庫是在一個包中,比如
pylib/login/rightpass.py
聲明的時候,可以在RF文件像python導(dǎo)入包里面的模塊那樣的語法,如下
*** Settings ***
Library pylib/login/rightpasswd.py
如果導(dǎo)入的庫中存在模塊的引入,引入的模塊要以加入pythonpath的路徑來寫否則會報錯
如果存在繼承的情況,只要導(dǎo)入子類就可使用父類的方法,要注意模塊導(dǎo)入時的路徑。
父類
子類
robot用例
總結(jié)如下:
1.在settings中聲明資源文件和變量文件:
路徑,目錄之間的分隔符用斜杠 / 而不是點(diǎn) .
2.在settings中聲明測試庫:
路徑,目錄之間的分隔符,可以用點(diǎn) . 也可以用斜杠 /
路徑,目錄之間的分隔符用點(diǎn)后面不加py,用斜杠后面加.py
簡介:
對于Python2而言,對于一個全局變量,你的函數(shù)里如果只使用到了它的值,而沒有對其賦值(指a = XXX這種寫法)的話,就不需要聲明global。
相反,如果你對其賦了值的話,那么你就需要聲明global。
聲明global的話,就表示你是在向一個全局變量賦值,而不是在向一個局部變量賦值。
若多個線程或進(jìn)程同時操作這一變量可能會導(dǎo)致?lián)屨假Y源的現(xiàn)象,變量不能按照預(yù)定的邏輯進(jìn)行操作,這時,在改變變量前需要對變量加互斥鎖,操作完成后釋放互斥鎖。
題外話:
GIL(Global Interpreter Lock) 全局解釋器鎖,導(dǎo)致任一時刻只能有一個線程使用解釋器,當(dāng)用于 IO 密集型任務(wù)時,IO 期間線程會釋放解釋器。
在 CPU 計算繁忙的任務(wù)重 不建議使用多線程,在非 CPU繁忙型任務(wù)中建議使用多線程。
順便說下使用多進(jìn)程的好處:完全并行,無 GIL 的限制,可充分利用多 CPU 多核的環(huán)境。
多線程使用互斥鎖Demo :
除了函數(shù)內(nèi)部,python的變量本身作用域就是全局的。
不同的模塊互相導(dǎo)入時,將變量一同導(dǎo)入就行了,而函數(shù)內(nèi)修改這些全局變量時需要先用global修飾變量名。
做一個類似配置文件的常量文件,把要全局共享的內(nèi)容,作為變量聲明并賦值,各模塊import進(jìn)來
例如一個函數(shù)內(nèi)有一個變量i,怎么在函數(shù)外或另一個函數(shù)中調(diào)用或更改它。新手學(xué)習(xí),謝謝。
==============================
不能在函數(shù)外更改某函數(shù)里的局部變量,因?yàn)槊慨?dāng)你實(shí)例化那個函數(shù)的時候,那個函數(shù)里面的局部變量也會被重新賦值,重新定義,談何更改呢?
這一個全部變量和局部變量的問題,如果要實(shí)現(xiàn)樓主說的,必須使用全局變量(類中的self):
================bianliang.py===========
#coding: utf-8
i = 0 #定義一個全局變量i
def a():
'''
打印出i的值
'''
print i
def b():
global i
a() #調(diào)用a方法
print i #打印i
i = 1000 #重新賦值i
print i #打印i
a() #再次調(diào)用a方法
b()
=================================
%python bianliang.py
1000
1000
這個py文件里面使用了一個全局變量i,實(shí)現(xiàn)了a方法和b方法共用參數(shù)i
定義一個py文件使用get和set方法設(shè)置和獲取變量
如在gol.py中
使用時如下在gol_test1.py中:
在gol_test2.py中