hyrobot-自動化測試框架,基於robotframework二次開發


官網:傳送門

from hyrobot.common import *

步驟

STEP(1, '登錄系統')
//-- 第 1 步 -- 登錄網站

檢查點

list = ['客戶', '葯品', '訂單']
CHECK_POINT('側邊欄菜單是否正確',list == ['客戶', '葯品', '訂單'])
//** 檢查點 **  側邊欄菜單是否正確
//---->  通過

在終端內打印

INFO('打印內容')
//打印內容

hyrobot 全局存儲對象 GSTORE

def open_browser():

    print('打開瀏覽器')
    wd = webdriver.Chrome()
    wd.implicitly_wait(5)

    # 使用黑羽robot 全局存儲對象 GSTORE
    GSTORE['global_webdriver'] = wd
    return wd

# 獲取 全局使用的 webdriver 對象
def get_global_webdriver():
    return GSTORE['global_webdriver']

公共代碼放入庫中

公共代碼用自定義函數,放入到lib目錄下。 //比如:打開瀏覽器open_browser	管理員登錄gly_login

初始化、清除、共享數據

清除 (英文叫 teardown

黑羽robot的初始化/清除(和robotframework一樣)支持 3種方式

  • 單個用例的初始化、清除
  • 整個用例文件的初始化、清除
  • 整個用例目錄的初始化、清除

單個用例的初始化、清除

class c0101:
    name = '管理員首頁 - UI-0101'

    # 初始化方法
    def setup(self):
        wd = open_browser()
        mgr_login(wd)

    #清除方法
    def teardown(self):
        wd = get_global_webdriver()
        wd.quit()

    # 測試用例步驟
    def teststeps(self):
        # 獲取webdriver對象 對應 已經登錄好的瀏覽器
        wd = get_global_webdriver()

        STEP(1, '獲取左側菜單信息')

用例文件的初始化、清除

整個 用例文件 的初始化、清除 是在 文件中 添加全局函數 suite_setup、suite_teardown

from hyrobot.common import *
from lib.webui import  *
from time import sleep

def suite_setup():
    INFO('suite_setup')
    wd = open_browser()
    mgr_login(wd)

def suite_teardown():
    INFO('suite_teardown')
    wd = get_global_webdriver()
    wd.quit()

class c0101...

class c0102...

套件目錄的初始化、清除

使用 整個用例文件的初始化、清除,就是 在這個目錄下面創建名為 __st__.py 的文件。

和套件文件一樣,套件目錄的 的初始化、清除 也是在 文件中 添加全局函數 suite_setup、suite_teardown。

缺省初始化、清除

定義 名稱為 test_setuptest_teardown 的全局函數。

如果在 用例文件 中定義了 全局函數 test_setup ,如果 該文件中 有用例本身沒有初始化 方法, 執行自動化的時候就會對該用例,使用這個 test_setup 初始化

如果在 用例文件 中定義了 全局函數 test_teardown ,如果 該文件中 有用例本身沒有清除 方法, 執行自動化的時候就會對該用例,使用這個 test_teardown 清除。

根據名稱挑選

通過 --test 或者 --suite 命令行參數 來指定執行哪些用例或者套件,而且還支持用通配符的方式。

--test testA                # 執行名為 testA 的用例
--test testA --test testB  # 執行名為 testA 和  testB 的用例
--test test*              # 執行名字以 test 開頭的用例
--suite 訂單管理              # 執行 名為 訂單管理 的套件

當要執行指定執行名稱的用例太多,可以使用參數文件,可以把所有的參數都放在參數文件中,比如,創建一個名字為 args 的參數文件:

--test *0301
--test *0302
--test *0303
--test *1401
--test *1402

一行一個參數

然后 run -A args

根據標簽挑選

根據用例的 標簽 來挑選用例

給用例添加標簽

給用例添加標簽有如下幾種方式

  • 套件文件全局變量 force_tags
force_tags = ['登錄功能','冒煙測試','UI測試']	//該文件里面所有測試用例都具有了這些標簽

標簽一定要放在列表中,即使只有一個標簽

在測試套件目錄初始化文件__st__.py定義了一個這樣的 force_tags 全局變量, 那么該目錄里面所有測試用例都具有了該tag

  • 測試用例類的 tags 靜態屬性
class c00001:
    name = '添加訂單 - 00001'
    # 用例標簽,可選   
    tags = ['登錄功能','冒煙測試','UI測試']	//本測試用例就具有了這些標簽

根據標簽挑選

執行自動化的時候,我們可以通過命令行參數,指定標簽,從而挑選要執行的測試用例

# 執行包含 標簽 '冒煙測試' 的用例. 
--include 冒煙測試  


# 執行不包含標簽 '冒煙測試' 的用例.
--exclude 冒煙測試 


# 執行 有冒煙測試、UITest 兩個標簽的用例
--include 冒煙測試ANDUITest 


# 執行 有 冒煙測試 或者 UITest 標簽 的用例
--include 冒煙測試   --include UITest


# 執行標簽格式為 A*B 的用例,比如 A5B, AB, A444B
--include A*B  

指定關鍵測試用例

hyrobot 執行時,可以指定用例是否是 關鍵(critical) 測試用例。

測試中有關鍵測試用例沒有通過,整個測試就被視為測試不通過。

hyrobot 執行測試時,如果沒有命令行參數特別指定,每個測試用例都被視為關鍵測試用例。

通過命令參數 --critical--noncritical 后面加 標簽名稱 來指定哪些用例 是 關鍵用例 或者 非關鍵用例。

run --critical first		//指定 只有具有 first 標簽的用例才是關鍵用例 其它都不是
run --noncritical first		//指定 具有 first 標簽的用例是非關鍵用例,其他用例都是關鍵用例。
run --critical basic*  --critical important*	//指定 具有 以 basic 開頭 或者 important開頭 的標簽 的用例都是關鍵用例,其他用例都不是關鍵用例。

特殊參數

清除所有robot用例文件

使用參數 run.bat --delrf 刪除已經存在的 robotframework格式的用例,不執行測試

只轉化Python用例為robotframework格式用例

使用參數 run.bat --torf 只執行轉化Python用例為RF用例,不執行轉化好的RF測試用例

只運行測試

使用參數 run.bat --runrf 直接執行已經存在的robotframework用例,不執行轉化Python用例為RF用例操作

只漢化測試報告

使用參數 run.bat --hanrf 只執行把測試報告漢化的工作,不執行轉化和測試

調試

debug 日志級別

在命令行加上 -L debug 參數,使得日志信息更加詳細

run -L debug	//如果有錯誤,會打印詳細的錯誤信息,方便定位。

pycharm斷點調試

hyrobot 調用 Robotframework 執行測試用例,其實就是 執行類似如下的命令

python -m robot.run cases

本質上就是一個python程序,當然我們可以在pycharm中執行,以前設置斷點的方法依然可以使用

但是我們需要從pycharm里面運行,就需要配置運行參數,點擊配置

然后,如下圖所示,進行配置。注意下圖方框里面要點擊箭頭,從 Script path 改為 Module name

這樣設置,執行的時候,就等於執行了下面的命令

cd E:\tmp\autotest_bysms
python.exe  -m robot.run  cases

然后再點擊debug的圖標,就可以進行斷點調試了。


🎉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM