SoloPi 相容 Appium、Macaca 兩大測試框架

Cathor(茅舍)發表於2020-02-28

| 背景

自 SoloPi 上線已有半載,收到了一些使用者的正向反饋,也給廣大測試同學帶來一定的效率提升的,和我們的初衷“為業界帶來美而小的工具”相吻合。同時也收到一些建議,例如 SoloPi 還不支援 CI。經過分析,多數公司 CI 都依賴與主流測試框架實現,SoloPi 雖然用例錄製體驗非常好,但與主流測試框架不相容,如果能讓 SoloPi 與主流測試框架相容,那該問題迎刃而解了。

| 「用例轉換」全新功能介紹

為了讓 SoloPi 與主流測試框架相容,用例相容是關鍵,本期我們新增了用例轉換功能。
SoloPi 用例與常規用例有所不同,它會將錄製時控制元件的全部資訊都儲存下來,在回放時綜合進行匹配,而一般的自動化用例往往只會使用其中一種資訊進行匹配。為了更好地適應使用者需求,轉化指令碼支援為每一個步驟配置查詢的條件,方便使用者選擇最合適的方式執行。
目前,SoloPi 轉化指令碼提供了 Appium、Macaca 兩種語言的轉換。你也可以根據自己的需要,參照後文程式碼解析部分,實現自己的轉化指令碼。

| 「用例轉換」使用指南

  1. 執行入口

    python3 handler.py
  2. 輸入SoloPi指令碼地址

  3. 選擇轉化型別(目前支援Appium和Macaca)

  4. 選擇輸出目錄

  5. 每一步單獨選擇查詢方式

  6. 匯出完成,可以在對應目錄檢視匯出的用例指令碼,匯出的指令碼檔案會被命名為 main.xxx 。

| 擴充套件實現

SoloPi用例核心轉化邏輯在exporter module下,使用者可以擴充套件BaseExporter類,來實現自己的轉換器

class BaseExporter(object):
"""
Export SoloPi case to file
"""

@staticmethod
@abstractmethod
def get_name() -> str:
"""
Get name for this exporter
"""

pass
@abstractmethod
def get_file_extension(self) -> str:
"""
Get File Extension for this type
:return:
"""

pass
def export_head(self, case_info: CaseInfo) -> str:
"""
Export file head, you can export some universal method in this part
"""

return ""
@abstractmethod
def export_step(self, step: Step, index: int, case_info: CaseInfo) -> str:
"""
Export every step
"""

pass
def export_tail(self, case_info: CaseInfo) -> str:
"""
Export file tail, for driver stop
"""

return ""

其中各方法含義如下
get_name: 獲取該匯出器名稱
get_file_extension: 獲取匯出檔案的副檔名
export_head:獲取匯出檔案的字首文字
export_step:獲取單步驟匯出的文字
export_tail:獲取匯出檔案的字尾文字

具體實現可以見 appium.py 與 macaca.py

立即體驗 SoloPi 最新功能
https://github.com/soloPi/SoloPi-Convertor

體驗 SoloPi 完整功能
https://github.com/alipay/SoloPi

| 問題反饋

歡迎大家在日常的迴歸測試、相容性測試以及效能測試過程中試用SoloPi工具,過程中如有任何問題和意見,可以在github上通過Issue進行反饋,也可加入SoloPi開源交流群參與討論。

相關文章