最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

10如何脫離AirtestIDE編寫、運(yùn)行自動(dòng)化腳本

2021-06-16 11:54 作者:Airtest醬  | 我要投稿

同學(xué)們好,我是網(wǎng)易AirtestProject的團(tuán)隊(duì)成員曉娟,歡迎大家來(lái)到我們的視頻教程專欄《14天Airtest自動(dòng)化測(cè)試小白課程》。

前面我們?cè)诮檀蠹揖帉懽詣?dòng)化腳本的時(shí)候,一直用的是我們配套的編輯器AirtestIDE,那么也會(huì)有很多同學(xué),他們并不想局限在我們配套的IDE上。比如他們想直接用命令行跑腳本,或者他們更習(xí)慣使用其它的python編輯器,比如pycharm等等。

所以今天我們來(lái)學(xué)習(xí)下,如何脫離AirtestIDE來(lái)編寫或者運(yùn)行腳本。

部署本地的python環(huán)境

之前我們就說(shuō)過(guò),airtest、pocoui和airtest-selenium都是python第三方庫(kù),所以只要在python環(huán)境里面裝上這幾個(gè)庫(kù),我們就可以在這個(gè)python環(huán)境里面運(yùn)行這些測(cè)試框架的腳本。

而我們的AIirtestIDE是內(nèi)嵌了1個(gè)裝好了這些庫(kù)的精簡(jiǎn)版的python環(huán)境,所以即使我們不在設(shè)置里面配置任何本地的python環(huán)境,我們依然可以跑airtest、poco或者airtest-selenium腳本。當(dāng)然,不使用IDE自帶的python環(huán)境,我們也可以?在選項(xiàng)--設(shè)置中,設(shè)置同學(xué)們本地的python環(huán)境,以此來(lái)支持更多的python第三方庫(kù)?


同理,如果我們想用本地的python環(huán)境跑自動(dòng)化腳本時(shí),就必須保證這個(gè)環(huán)境已經(jīng)安裝好了我們所需要的庫(kù)。

另外,對(duì)于python版本,我們?更建議大家選擇python3?,python2我們雖然也支持,但畢竟官方也不維護(hù)python2了,所以我們更推薦大家使用python3作為大家的運(yùn)行環(huán)境。目前我們也已經(jīng)支持了在Python3.9下安裝我們的airtest、pocoui和airtest-selenium庫(kù)。

當(dāng)我們?cè)诒镜匕惭b好1個(gè)python環(huán)境之后,可以直接執(zhí)行python來(lái)查看本地python的詳細(xì)信息。


接下來(lái),我們就可以安裝我們要用到的airtest和pocoui等庫(kù)了,命令如下:

pip install airtest

pip install pocoui

pip install airtest-selenium

需要特別注意的是,poco框架的庫(kù)名叫pocoui?,同學(xué)們不要寫錯(cuò)了,如果不小心同時(shí)安裝了poco和pocoui,請(qǐng)同學(xué)們務(wù)必卸載掉poco,只留下pocoui,避免影響后續(xù)腳本的運(yùn)行,刪除命令如下:

pip uninstall airtest

pip uninstall pocoui

pip uninstall airtest-selenium

安裝好了對(duì)應(yīng)的庫(kù)之后,我們可以使用 pip list 命令查看相應(yīng)的庫(kù)是否安裝上了:


如果之后有版本更新,我們也可以直接使用命令將本地的庫(kù)直接更新到最新版本:

pip install -U airtest

pip install -U pocoui

pip install -U airtest-selenium

如同學(xué)們?cè)诎惭b過(guò)程中,有遇到?安裝超時(shí)報(bào)錯(cuò)?的,可以嘗試更換一些國(guó)內(nèi)的安裝源來(lái)安裝這些庫(kù),方法如下:

# 豆瓣源

pip install airtest -i https://pypi.tuna.tsinghua.edu.cn/simple

# 常見(jiàn)的國(guó)內(nèi)源

阿里云 http://mirrors.aliyun.com/pypi/simple/

中國(guó)科技大學(xué) https://pypi.mirrors.ustc.edu.cn/simple/

豆瓣(douban) http://pypi.douban.com/simple/

清華大學(xué) https://pypi.tuna.tsinghua.edu.cn/simple/

中國(guó)科學(xué)技術(shù)大學(xué) http://pypi.mirrors.ustc.edu.cn/simple/

至此,本地的python環(huán)境就部署好了,其實(shí)還是非常簡(jiǎn)單的,準(zhǔn)備一個(gè)python環(huán)境,然后在這個(gè)環(huán)境里面使用 pip install 命令安裝好airtest、pocoui和airtest-selenium庫(kù)即可。(不做web自動(dòng)化的話,其實(shí)airtest-selenium也可以不安裝先,有需要的時(shí)候再把它裝上去。)


使用命令行跑腳本/生成報(bào)告

1. 命令行運(yùn)行腳本

在命令行執(zhí)行腳本的命令是airtest run + 腳本文件路徑,該命令的可傳參數(shù)如下:

  • --device,用來(lái)指定連接的被測(cè)設(shè)備

  • --log,用來(lái)指定log內(nèi)容和截圖存放的目錄

  • --recording,運(yùn)行腳本時(shí)進(jìn)行錄屏操作

  • --no-image,傳入該參數(shù)后,在任務(wù)運(yùn)行過(guò)程中不再保存截圖

舉個(gè)例子,我們?cè)贒:/test/目錄下,新建1個(gè)叫report_test.air的腳本。并在腳本中編寫1條touch腳本。


然后我們?cè)诿钚羞\(yùn)行這個(gè)腳本,指定測(cè)試設(shè)備為連接上的第一臺(tái)安卓設(shè)備,log保存路徑為D:/log/,運(yùn)行腳本時(shí)進(jìn)行錄屏操作,錄屏文件保存到D:/log/record01.mp4:

airtest run D:/test/report_test.air --device Android:/// --log D:/log/ --recording D:/log/record01.mp4

運(yùn)行結(jié)束后,我們可以到指定目錄下查看是否生成了我們指定的log文件和錄屏文件:


其中有幾點(diǎn)需要注意的:

① 如果腳本中沒(méi)有指定運(yùn)行設(shè)備,那么在編寫命令行的運(yùn)行腳本命令時(shí),就必須指定設(shè)備;如腳本已指定運(yùn)行設(shè)備,則運(yùn)行腳本的命令可以不指定設(shè)備,剛才我們的示例腳本是沒(méi)有指定設(shè)備的,如果命令行也不指定設(shè)備,命令行會(huì)提示你沒(méi)有連接設(shè)備,且腳本也不能跑下去。


② 同理,如果命令未指定log參數(shù),則默認(rèn)是不保存log內(nèi)容的

③ --device 后面跟的是用于初始化設(shè)備的URI字符串,連接iOS、安卓和Windows窗口的字符串是不一樣的,我們給大家準(zhǔn)備了詳細(xì)的示例,一起來(lái)看一下:

連接Android手機(jī)

# 什么都不填寫,默認(rèn)取當(dāng)前連接中的第一臺(tái)手機(jī)

Android:///

# 連接本機(jī)默認(rèn)端口連的一臺(tái)設(shè)備號(hào)為79d03fa的手機(jī)

Android://127.0.0.1:5037/79d03fa

# 用本機(jī)的adb連接一臺(tái)adb connect過(guò)的遠(yuǎn)程設(shè)備,注意10.254.60.1:5555其實(shí)是serialno

Android://127.0.0.1:5037/10.254.60.1:5555

連接iOS手機(jī)

iOS:///127.0.0.1:8100

連接Windows窗口

# 連接一個(gè)窗口句柄為123456的Windows窗口

Windows:///123456

# 連接一個(gè)Windows窗口,窗口名稱匹配某個(gè)正則表達(dá)式

Windows:///?title_re=Unity.*

# 連接windows桌面,不指定任何窗口

Windows:///

連接使用了備選連接參數(shù)的設(shè)備

# 夜神模擬器(127.0.0.1:62001為夜神模擬器的端口號(hào))

Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP&&ori_method=ADBORI

# 設(shè)備號(hào)為79d03fa的 MIUI11 設(shè)備

Android://127.0.0.1:5037/79d03fa?cap_method=JAVACAP&&ori_method=ADBORI

更多關(guān)于設(shè)備字符串的內(nèi)容,我們可以參看這篇公眾號(hào)教程:


④ 只有當(dāng)airtest版本大于等于1.1.6時(shí),--recording參數(shù)后面才允許自定義錄屏文件名,且必須以.mp4結(jié)尾。

⑤ 只有當(dāng)airtest版本大于等于1.1.7時(shí),才有--no-image參數(shù),才能指定運(yùn)行腳本過(guò)程中不保存截圖。

2. 命令行生成報(bào)告

使用airtest run 命令運(yùn)行完腳本以后,我們可以使用另一個(gè)命令,airtest report + 腳本文件路徑指令來(lái)生成一份HTML格式的報(bào)告。

該命令的可傳參數(shù)非常多:

  • --log_root,指定log內(nèi)容和截圖文件所在的目錄

  • --outfile,指定生成報(bào)告的目錄

  • --lang,指定報(bào)告語(yǔ)言,可以是中文/英文

  • --export,導(dǎo)出一個(gè)包含所有資源的報(bào)告文件

  • --static_root,指定靜態(tài)資源文件的路徑

以剛才的腳本為例,在命令行運(yùn)行以后,我們就可以繼續(xù)生成它的報(bào)告了,指定log路徑為D:/log,生成html報(bào)告的路徑為D:/log/log.html,指定報(bào)告的語(yǔ)言為英文。

airtest report D:/test/report_test.air --log_root D:/log ?--outfile D:/log/log.html --lang en


之后我們可以到指定的文件夾里面查看對(duì)應(yīng)的報(bào)告文件:

另外我們?cè)賮?lái)看下,--export這個(gè)參數(shù),使用這個(gè)參數(shù),可以幫我們打包這份測(cè)試報(bào)告,然后我們可以直接把打包好的這份報(bào)告發(fā)送給別人查看。如果不使用--export來(lái)導(dǎo)出報(bào)告的話,html報(bào)告里面的圖片資源、靜態(tài)資源路徑都是絕對(duì)路徑,發(fā)到別的電腦之后,別人是無(wú)法正常查看的。


只有導(dǎo)出之后的報(bào)告,里面的圖片資源和靜態(tài)文件資源才會(huì)使用相對(duì)路徑,這樣把報(bào)告發(fā)送到別的電腦上時(shí),我們才能夠正常查看。

airtest report D:/test/report_test.air --log_root D:/log ?--lang en ?--export D:/export/


打開(kāi)指定的導(dǎo)出路徑,可以看到導(dǎo)出的測(cè)試報(bào)告文件里面包含了非常多的東西:


報(bào)告里面的圖片資源和靜態(tài)資源都是相對(duì)路徑,我們可以把這份報(bào)告發(fā)送給別人查看。


最后一個(gè)參數(shù)--static_root,用于指定靜態(tài)資源的路徑。因?yàn)槲覀兠看螌?dǎo)出一份報(bào)告,都會(huì)包含一份相同的static文件,它里面放置了報(bào)告的一些css和js等文件。一般來(lái)說(shuō),除非報(bào)告的樣式做了某些更新,否則這些靜態(tài)資源文件都是固定不變的。

因此我們可以將這些資源文件部署到靜態(tài)資源文件服務(wù)器上,用例如 https://host:port/static/css/ 的路徑來(lái)訪問(wèn)它。然后在生成報(bào)告時(shí),將這個(gè)部署出來(lái)的服務(wù)器地址作為 --static_root的參數(shù)傳過(guò)去,這樣導(dǎo)出的報(bào)告文件里面將不再包含static文件,HTML報(bào)告想要訪問(wèn)靜態(tài)資源文件時(shí),訪問(wèn)的就是 static_root給的地址:

airtest report D:/test/report_test.air --log_root D:/log ?--lang en ?--static_root https://host:port/ ?--export D:/export/

需要注意的是,如果傳入給static_root的不是以http開(kāi)頭的資源服務(wù)器地址,而是一個(gè)本地路徑,導(dǎo)出報(bào)告時(shí),還是會(huì)把給定的本地路徑里面的靜態(tài)文件復(fù)制過(guò)來(lái)一份。


使用pycharm等編寫/運(yùn)行腳本

講完了如何在命令行上運(yùn)行自動(dòng)化腳本,接下來(lái)我們?cè)賮?lái)看看,如果不使用AirtestIDE,如何在其它python編輯器中編寫、運(yùn)行Airtest和poco腳本。

以pycharm編輯器為例,首先需要保證你所用項(xiàng)目使用的python環(huán)境里安裝了airtest和pocoui庫(kù)??梢栽谖募?-設(shè)置--項(xiàng)目中查看:


如未安裝,則點(diǎn)擊package右側(cè)的+號(hào),把a(bǔ)irtest和pocoui安裝好。

環(huán)境弄好以后,我們就可以開(kāi)始編寫自動(dòng)化腳本了,新建一個(gè).py文件,添加上引入和初始化代碼,也可以直接把.air腳本的初始化代碼復(fù)制過(guò)來(lái),但需要注意的是,pycharm不會(huì)自動(dòng)幫我們連接設(shè)備,所以我們需要自己在腳本中添加連接設(shè)備的代碼,這里以在auto_setup連接設(shè)備為例:

auto_setup(__file__,devices=["android://127.0.0.1:5037/emulator-5554?cap_method=JAVACAP&&ori_method=MINICAPORI&&touch_method=MINITOUCH"])

更多連接設(shè)備的接口,可以參看剛才給你們推薦的文章。確保先編寫完設(shè)備連接的腳本,再來(lái)編寫airtest腳本,這里以點(diǎn)擊微信為例,首先截取一張微信icon的截圖,利用你們電腦里裝有的截圖工具即可,然后把截圖文件保存在你本地路徑,比如 D:\atest_image\wechat.png,然后把截圖的保存路徑添加到你的點(diǎn)擊腳本里面:

touch(Template(r"D:\atest_image\wechat.png", threshold=0.8,))

這樣就完成了1個(gè)很簡(jiǎn)單的自動(dòng)化腳本了:


當(dāng)然,如果要編寫poco腳本的話,因?yàn)樵趐ycharm中看不到設(shè)備的UI樹(shù),所以我們可以打開(kāi)AirtestIDE來(lái)查看UI樹(shù),然后在pycharm上編寫對(duì)應(yīng)的poco語(yǔ)句即可。

最后就是生成報(bào)告了,我們可以調(diào)用一些airtest提供的接口幫助我們生成報(bào)告,比如simple_report、LogToHtml類等。

以simple_report接口為例:


因?yàn)閳?bào)告是根據(jù)log內(nèi)容來(lái)生成的,所以我們需要在腳本初始化添加logdir參數(shù),用于保存腳本運(yùn)行的log內(nèi)容到指定路徑,使用simple_report生成報(bào)告的時(shí)候,也要把logpath傳進(jìn)去,讓他去對(duì)應(yīng)的路徑找log內(nèi)容來(lái)生成報(bào)告。

關(guān)于用腳本生成報(bào)告更多詳細(xì)的內(nèi)容,大家可以參看這篇推文,我們就不一一在這里講述了。


小結(jié)

那么今天的內(nèi)容就到這里為止啦,這節(jié)課的內(nèi)容比較多,大家課后可以多多實(shí)踐,好好消化下。


至此,關(guān)于自動(dòng)化腳本編寫專題的課程就講完了,下節(jié)課我們將進(jìn)入一個(gè)新的章節(jié),手把手教大家如何接入pocosdk,然后用poco這個(gè)框架來(lái)測(cè)試引擎渲染的游戲。下期我們不見(jiàn)不散~


10如何脫離AirtestIDE編寫、運(yùn)行自動(dòng)化腳本的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
当涂县| 松阳县| 新邵县| 来安县| 循化| 连江县| 平阳县| 涡阳县| 余江县| 项城市| 香格里拉县| 新巴尔虎左旗| 五台县| 乐都县| 大悟县| 五大连池市| 漳州市| 陆良县| 雅江县| 司法| 潞城市| 北安市| 连南| 黔南| 巴里| 洛扎县| 武汉市| 孝感市| 临汾市| 苏尼特左旗| 响水县| 贡觉县| 东至县| 内乡县| 沙雅县| 道孚县| 师宗县| 泸西县| 中阳县| 航空| 高陵县|