官網:傳送門
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_setup
和 test_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的圖標,就可以進行斷點調試了。
🎉