Airtest之調用其他腳本——using()如何使用

 

前言 

今天我們來講一個大家經常問到或者經常容易出錯的一個問題--如何調用別的.air腳本中封裝好的方法,我們將圍繞以下內容來講解:

  1. 普通調用的方法;

  2. 設定默認項目根目錄PROJECT_ROOT來調用的方法;

  3. 調用過程中常見的問題

     

爲了幫助大家更好地理解,下文都將以實際案例來介紹調用的方法和常見問題。

 

 

普通調用的方法

首先,我們新建1個common.air的腳本,在裏面定義1個名爲common_function()的方法:

# common.air
from airtest.core.api import *
auto_setup(__file__)

def common_function():
touch("tmp.png")

然後,我們再新建1個call.air的腳本,用來調用common.air裏面封裝好的方法:

# call.air
from airtest.core.api import using
auto_setup(__file__)

# using("相對路徑/絕對路徑")
using("common.air")
from common import common_function

common_function()

common.aircall.air腳本所在目錄如圖所示:


圖片


值得注意的是,call.air的代碼示例中,using("common.air")使用的是相對路徑,我們也可以使用絕對路徑來找到common.air,如:

using("D:/test/common.air")

 

設定默認項目根目錄PROJECT_ROOT來調用的方法

如果需要調用的子腳本路徑統一都放在某個目錄下,可以通過設定一個默認項目根目錄 PROJECT_ROOT,讓使用using接口時能夠在當前根目錄下尋找別的子腳本,無需填寫完整路徑,讓腳本之間相互調用使用更加方便。

例如,我們建立一個名爲test1.air的腳本,絕對路徑爲D:/test/user/project/test1.air :     

圖片

# test1.air
from airtest.core.api import *
auto_setup(__file__)

def test():
touch("tmp.png")

然後我們在"D:/test/"目錄下新建main.air腳本,調用test1.air腳本里面的test方法:    

圖片

# main.air
from airtest.core.api import *
auto_setup(__file__)

# PROJECT_ROOT需要填寫絕對路徑
ST.PROJECT_ROOT = "D:/test/user/project"
using("test1.air")
from test1 import test
test()
 

 

調用過程中常見的問題

路徑斜槓問題

填寫路徑的時候,需要注意使用的是/而非反斜槓\,特別是你從計算機上覆制路徑的時候,計算機的路徑使用的都是反斜槓\,我們在代碼中使用時需要手動轉換過來,不然會出現以下報錯:

圖片

圖中示例的路徑中包含了很多反斜槓\(特殊字符),方法一是我們可以通過添加反斜槓\來轉義,也就是說路徑字符串可以寫成類似這樣:D:\\test\\user\\project

或者是我們可以在字符串前加一個r來定義原始字符串(忽略所有的轉義字符,比如這裏的反斜槓\),類似這樣: r"D:\test\user\project"

調用的模塊不存在

在調用的過程中,我們經常會遇到以下報錯:

圖片

上述報錯的意思是,程序找不到我們想要調用的名爲test1的這個模塊。這時候我們可以從以下幾方面來思考:

  1. 仔細覈對調用的模塊是否存在於你填寫的路徑裏面;

  2. 設定默認的項目根目錄PROJECT_ROOT時是否使用了相對路徑而沒有使用絕對路徑。

如果以上都沒有問題,但程序還是找不到你想調用的模塊,你還可以嘗試把路徑加入到sys.path裏面去,Python就會在sys.path的路徑下搜索對應的.py文件,以上述的main.air腳本爲例:

# main.air
from airtest.core.api import *
auto_setup(__file__)

#將test1.air的路徑添加到sys.path裏面
sys.path.append(r"D:\test\user\project\test1.air")

using("test1.air")
from test1 import test
test()

這種方法是在運行時修改sys.path,運行結束後失效。

另外你還可以通過設置環境變量PYTHONPATH來增加模塊搜索的路徑,設置方式與設置Path環境變量類似。注意只需要添加你自己的搜索路徑,Python自己本身的搜索路徑不受影響。

在IDE可以運行的腳本到命令行運行就報錯

上文中,我們介紹了倆個方法實現調用,裏面的例子是在IDE中運行的;但如果我們直接在命令行中使用airtest run 腳本絕對路徑來運行,有可能又會出現找不到模塊的情況:

圖片

這是因爲,在IDE裏面默認會把父路徑加到sys.path裏面,而使用命令行跑腳本的時候,不會默認添加父路徑;爲避免以上錯誤,我們可以在腳本里手動把路徑添加到sys.path裏面,避免不必要的錯誤。

sys.path.append(r"D:\test\user\project\test1.air")


---------------------------------------------------------------------------------

關注微信公衆號即可在手機上查閱,並可接收更多測試分享~

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章