robotframework在測試中實現動態的增加測試內容,使用純robotframework自身語法實現
阿新 • • 發佈:2019-01-03
自動化測試有種場景是:用例跑起來了,想增加新的檢查項或則配置,一般常見可能的操作是:
1、通過動態定期檢查一個指令碼,或檔案,執行檔案裡面的內容
2、使用reload library方法,迴圈更新庫,執行時,更新庫的內容,變能實現執行用例時動態增加修改測試內容
以上方法都需要藉助,外部擴充套件實現,靈活度高,但是維護不方便,各種實現依賴於大量擴充套件的程式碼,本身robotframework自身的封裝大量原來的api無法使用,作為測試來說,建議能不用python擴充套件就儘量少用,使用robotframework自帶的便於維護和視覺化更好。
所以還是使用robotframe自帶的方法方便,本文以resroure import問題說明
這樣能實現,增加修改內容,在robotframework裡面通過增加關鍵字就好了,具體
第一個思路,通過有效的動態import實現
例如,開始沒有“臨時檢查1:這項,可以先把用例執行起來,再在RIDE裡新增“臨時檢查1”,則“臨時檢查1”會自動執行
*** Test Cases *** 執行檢查 : FOR ${var} IN RANGE 1 10000000 \ Sleep 1 \ Import Resource ${CURDIR}/通用檢查.txt \ ${通用檢查結果} Run Keyword And Ignore Error Keyword Should Exist 通用檢查 \ Run Keyword If '${通用檢查結果[0]}'=='PASS' 通用檢查 \ ${匯出情況} Run Keyword And Ignore Error Import Resource ${CURDIR}/臨時檢查1.txt \ Comment 檢視是否有新增檢查項 \ Continue For Loop If "${匯出情況[0]}"=="FAIL" \ ${臨時檢查1結果} Run Keyword And Ignore Error Keyword Should Exist 臨時檢查1 \ Run Keyword If '${臨時檢查1結果[0]}'=='PASS' 臨時檢查1
第二個思路是修改robotframe的原語義,能解決,未驗證穩定性
這樣每次使用import_resource會每次都重新整理下resource
修改檔案
\robot\running\namespace.py
def _import_resource(self, import_setting, overwrite=False): path = self._resolve_name(import_setting) self._validate_not_importing_init_file(path) #強制執行import #if overwrite or path not in self._kw_store.resources: if True: resource = IMPORTER.import_resource(path) self.variables.set_from_variable_table(resource.variables, overwrite) user_library = UserLibrary(resource)
\robot\running\importer.py
def import_resource(self, path):
#if path in self._resource_cache:
# LOGGER.info("Found resource file '%s' from cache" % path)
#else:
#強制執行import
resource = ResourceFileBuilder().build(path)
self._resource_cache[path] = resource
return self._resource_cache[path]