如何給Airtest腳本/報告增加log記錄

1. 前言

儘管Airtest腳本運行過程中會輸出非常豐富的log信息,並且Airtest報告也會把我們腳本的的運行步驟顯示出來,但有時候,我們會需要在腳本里面,插入一些自定義的log內容(比如某些關鍵點),並且顯示在Airtest報告中。

這裏就要用到Airtest提供的 log() 接口了。

2. log接口的用法

我們建議大家使用最新版本的Airtest來體驗這個 log() 接口,該接口支持傳入字符串、非字符串和 traceback 對象:

1)記錄一條簡單的log

我們可以給 log() 接口傳入1個字符串,來非常便捷接插入一條簡單的log記錄:

log("插入一條log記錄")

運行後,我們不僅可以在log查看窗的log日誌中看到我們插入的log記錄:

[16:02:07][INFO]<airtest.core.api> 插入一條log記錄

還可以在生成的Airtest報告中查看到這條log記錄:

2)記錄一條報錯log

如果我們給log接口傳入的是 traceback 對象,將會自動在報告中標記爲報錯步驟:

try:
    1/0
except Exception as e:
    log(e)

運行後,我們可以在log日誌中看到1條報錯的log:

[16:13:55][ERROR]<airtest.core.api> Traceback (most recent call last):
  File "D:\demo\test02.air\test02.py", line 10, in <module>
    1/0
ZeroDivisionError: division by zero

Airtest報告也會顯示這個 traceback 的log,並且標記爲錯誤步驟:

3)記錄一條非字符串的log

上述2種log,已經可以滿足我們大部分的log需求了,但是有時候,我們可能會有一些複雜log記錄需求,比如 dictlist 這些,所以Airtest的 log() 接口也有支持傳入非字符串的內容:

data = {"test": 123, "time": 123456}
log(data,desc="記錄1條複雜的log")

在log日誌中也會顯示成一條 [info] 日誌:

[16:22:27][INFO]<airtest.core.api> {'test': 123, 'time': 123456}

同時,Airtest報告也能看到這條複雜log的標題和詳細內容:

4)自定義當前log的時間戳

另外, log 接口還支持非常豐富的參數,比如自定義時間戳 timestamp

# 該條log的時間被定義爲當前時間
log("自定義log的時間戳", timestamp=time.time())

# 該條log的時間被定義爲5秒之前
t1 = time.time()
time.sleep(5)
log("自定義log的時間戳", timestamp=t1)
5)自定義當前log的標題

如果是插入1條簡單的字符串log,默認會取該字符串作爲log的標題顯示在報告步驟上;但我們也可以通過 desc 參數,來自定義一些複雜log的標題,像示例3)那樣,就有自定義log的標題。

當然,這對傳入普通字符串的log也是同樣適用的:

log("123",desc="這是1條log")

6)給當前log截取屏幕圖像

有一些情況下,插入一些關鍵的log還不足以讓我們去看到更多的信息,所以我們支持在保存log的同時,截取當前的屏幕畫面,去獲取更多的測試信息:

log("截圖log",snapshot=True)

3. 拓展-如何過濾大量的log日誌

那其實在Airtest的log日誌這塊,同學們除了希望自定義log之外,還有一點是希望過濾掉一些不關注的log信息,比如,大部分同學可能只關注跑測過程的報錯信息,而我們的Airtest腳本跑測過程,會輸出大量的log信息:

但其實我們更關注報錯信息,類似:

這個時候可以通過下述方式,來幫助我們過濾掉一些我們不關注的信息:

# -*- encoding=utf8 -*-
__author__ = "user"
import logging
logger = logging.getLogger("airtest")
logger.setLevel(logging.ERROR)
from airtest.core.api import *
auto_setup(__file__)

這樣只有在運行腳本的開頭,會輸出少量的log信息,後續都是同學們最關注的的ERROR信息了:

4. 小結

那今天我們介紹了增加自定義log的接口,以及如何過濾Airtest大量log裏面我們不關注的部分,後續我們還會持續跟大家分享下,如何把log內容保存在文件中,感興趣的同學可以關注我們,避免錯過後續的推文內容哦!


Airtest官網https://airtest.netease.com/
Airtest教程官網https://airtest.doc.io.netease.com/
搭建企業私有云服務https://airlab.163.com/b2b

官方答疑 Q 羣:117973773

呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~

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