日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对Airtest报告的步骤标题做内容定制?实用速学

發(fā)布時間:2023/12/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对Airtest报告的步骤标题做内容定制?实用速学 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

此文章來源于項目官方公眾號:“AirtestProject”
版權(quán)聲明:允許轉(zhuǎn)載,但轉(zhuǎn)載必須保留原鏈接;請勿用作商業(yè)或者非法用途

1. 前言

今天我們來聊一個非常實用的話題!有很多同學(xué)提過,我能不能修改Airtest報告顯示的步驟名稱,不想要 touch 全部顯示成 點擊 ,控件點擊全部顯示成 Poco Click 之類的:

那今天我們就利用 --plugins 參數(shù)傳入插件,來實現(xiàn)同學(xué)們的這個需求。

2. --plugins參數(shù)簡介

可能還有很多同學(xué)不那么熟悉 --plugins 這個參數(shù),這里簡單解釋一下。在生成Airtest報告的命令 airtest report + 腳本路徑 后面,支持添加 --plugins 參數(shù),傳入報告插件,用來對報告內(nèi)容做一些簡單的定制。

如果我們生成的是純Airtest腳本的報告,其實是不用理會這個參數(shù)的(定制除外)。

但如果我們生成帶有poco或者airtest-selenium腳本的報告,就需要帶上這個參數(shù),傳入項目給出的對應(yīng)插件,用于對poco/airtest-selenium語句的解析和處理,并修改一些顯示效果。

1)生成poco腳本報告的插件示例

我們以包含Poco語句的腳本報告為例,來看下傳入項目給出的插件和不傳入插件的差別:

# -*- encoding=utf8 -*- __author__ = "AirtestProject"from airtest.core.api import * from airtest.report.report import simple_report,LogToHtmlauto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)poco(text="網(wǎng)易云音樂").click()
  • 不添加 --plugins 參數(shù)生成的報告:

  • 添加 --plugins 參數(shù)生成的報告:

這就是命令行里 --plugins 這個參數(shù)的作用,可以傳入指定的插件,用來修改報告內(nèi)容。

具體它做了什么事,可以直接看源碼: https://github.com/AirtestProject/Poco/blob/master/poco/utils/airtest/report.py

我們也可以在AirtestIDE的AirtestIDE\poco\utils\airtest\report.py路徑下找到源碼文件:

同理,給含有airtest-selenium語句的腳本生成報告,也可以使用下述方式傳入對應(yīng)的插件:

--plugins airtest_selenium.report

我們也可以在AirtestIDE的AirtestIDE\airtest_selenium\report.py路徑下面找到airtest-selenium的報告插件文件:

3. 對Airtest報告做步驟標(biāo)題的內(nèi)容定制

那我們了解了如何利用 --plugins 參數(shù)傳入插件來修改Airtest報告內(nèi)容之后,這里再以一個最簡單的修改范例,看下 如何寫出自己的插件來對Airtest報告做標(biāo)題定制

1)查看插件源碼找到用來顯示報告左側(cè)標(biāo)題的內(nèi)容

以修改Airtest的 touch 步驟標(biāo)題為例。我們可以先查看一下,airtest的report.py的源碼:https://github.com/AirtestProject/Airtest/blob/master/airtest/report/report.py 。

可以看到有個叫 _translate_title 的方法,是專門用來顯示報告左側(cè)標(biāo)題內(nèi)容的:

def _translate_title(self, name, step):title = {"touch": u"Touch","swipe": u"Swipe","wait": u"Wait","exists": u"Exists","text": u"Text","keyevent": u"Keyevent","sleep": u"Sleep","assert_exists": u"Assert exists","assert_not_exists": u"Assert not exists","snapshot": u"Snapshot","assert_equal": u"Assert equal","assert_not_equal": u"Assert not equal",}return title.get(name, name)

也就是說,假如腳本里面調(diào)用了 touch 函數(shù),報告里會對應(yīng)地用函數(shù)名稱找到對應(yīng)的標(biāo)題 Touch 。

2)如何自定義插件

我們可以寫一個插件,來替換掉 _translate_title 的返回值,可以去模仿一下 poco.utils.airtest.report 的源碼是怎么寫的:

假如我們想把touch步驟對應(yīng)的標(biāo)題Touch,修改成Click,可以自定義1個這樣的插件 new_report.py :

# -*- coding: utf-8 -*- import airtest.report.report as reportold_translate_title = report.LogToHtml._translate_titledef new_translate_title(self, name, step):title = old_translate_title(self, name, step)if title == "Touch":title = "Click"return titlereport.LogToHtml._translate_title = new_translate_title

這段代碼的意思是,用一個新的函數(shù) new_translate_title,來替換掉原本airtest模塊里的LogToHtml當(dāng)中的 _translate_title方法。

3)通過–plugins傳入自定義插件

寫好報告插件之后,為了快速演示效果,我們把插件保存到與當(dāng)前 .air 腳本同層目錄下,并且按住 shift+右鍵 在當(dāng)前目錄下打開cmd/PowerShell:

不傳入我們自定義的插件生成的報告,touch步驟依舊是按舊插件的內(nèi)容顯示:

airtest report D:\test_plu\song.air -log_root D:/test/test01\ed879c1f10fa732db3e5e2c417ca7221 --outfile D:\test_plu\song.air\old_re.html

傳入我們自定義的插件,步驟標(biāo)題就會按照我們自定義的插件內(nèi)容來顯示了:

python -m airtest report song.air --log_root D:/test/test01\ed879c1f10fa732db3e5e2c417ca7221 --outfile D:\test_plu\song.air\new_re.html --plugins new_report

可以看到步驟標(biāo)題上,原本的 Touch 已經(jīng)被替換成了 Click 。

4. 拓展:報告插件加載的原理

關(guān)于報告插件加載的原理,我們可以直接看源碼: https://github.com/AirtestProject/Airtest/blob/master/airtest/report/report.py#L73-L82 。

Airtest使用了python的 __import__ 來嘗試導(dǎo)入插件模塊,比如poco中的airtest報告插件,在 import 的時候是 import poco.utils.airtest.report ,因此在命令行中我們用了--plugins poco.utils.airtest.report 來導(dǎo)入。

如果想要在非當(dāng)前目錄下導(dǎo)入自定義的報告插件,直接傳入路徑是不行的,比如試圖傳入 --plugins d:\test\report\new_report.py 這樣的參數(shù),會發(fā)現(xiàn)無法加載成功。

我們可以開個python終端試一下:

>>> __import__("d:\\test\\report\\new_report.py") Traceback (most recent call last):File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'd:\\test\\report\\new_report'

但是如果嘗試把文件所在路徑加入到系統(tǒng)PATH中,sys.path 添加完路徑后就能夠找得到了:

>>> import sys >>> sys.path.append("d:\\test\\report") >>> __import__("new_report") <module 'new_report' from 'd:\\test\\report\\new_report.py'>>>> import sys >>> from airtest.report.report import LogToHtml >>> sys.path.append("d:\\test\\report") >>> rpt = LogToHtml(r"D:\test\report\yongli.air", r"D:\test\report\logs", plugins=["new_report"]) [14:32:22][DEBUG]<airtest.report.report> try loading plugin: new_report >>> rpt.report()

這時候再去打開生成的html文件,就發(fā)現(xiàn)成功生效了,可以看到剛才執(zhí)行完 LogToHtml 之后airtest自動打了一條加載插件的log出來,說明成功加載到了。
注意plugins的參數(shù)是一個list,因為支持多個插件傳入

5. 小結(jié)

了解了如何 自定義插件 并且知道了 插件的加載原理 之后,我們就可以著手“定制”自己的Airtest報告了。

舉個例子,我們在進(jìn)行一些控件點擊的時候,通常會使用如下的腳本:

poco(text="網(wǎng)易云音樂").click()

假設(shè)我們自定義了1個poco插件,可以讓這條腳本的步驟標(biāo)題顯示成“點擊控件:網(wǎng)易云音樂”,會不會比統(tǒng)一的Poco Click看著要更清晰明了一些呢?

當(dāng)然,這種定制款的Airtest報告就有待同學(xué)們?nèi)ド钊胪诰蚶?#xff0c;畢竟每位同學(xué)的需求或者閱讀習(xí)慣都是不一樣的,希望大家早日“定制”出讓自己滿意的Airtest報告。


Airtest 官網(wǎng):http://airtest.netease.com/
Airtest 教程官網(wǎng):https://airtest.doc.io.netease.com/
搭建企業(yè)私有云服務(wù):https://airlab.163.com/b2b

官方答疑 Q 群:654700783

呀,這么認(rèn)真都看到這里啦,幫忙點個贊或者收藏支持下我把,灰常感謝~

總結(jié)

以上是生活随笔為你收集整理的对Airtest报告的步骤标题做内容定制?实用速学的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。