2013-10-10 55 views
1

假設有一個測試腳本正在執行併發生錯誤,有人可以解釋QTP如何檢測到它是一個錯誤嗎?基本上我想知道QTP如何檢測到這個錯誤?例如:可能有些變量持續不斷地檢查是否發生了錯誤。QTP如何檢測錯誤?

我看着Err.Number的,但錯誤已經發生之後被修改。 QTP如何知道Err.Number被修改?

我只是想運行批處理測試腳本,當測試腳本失敗,我想寫的錯誤描述和測試腳本名的文件,並跳過當前測試和執行下一個測試腳本。有任何想法嗎?

+0

我認爲這是不看QTP內部或你最好描述錯誤的是什麼類型(即使在當時)無法回答。這也完全取決於你在這裏討論的是什麼樣的錯誤。語法錯誤,對象存儲庫錯誤等等。QTP不是監視Err.Number,而是QTP *是腳本執行引擎,通過引發異常來設置它。 – Xiaofu

+1

如果你想通過了解這些信息來實現某些特定的錯誤處理或報告,也許你可以在問題中提出這些細節,並獲得一些更有用的答案。 – Xiaofu

+0

@xiaofu:我只想批量運行測試腳本,當測試腳本失敗時,我只想將錯誤描述和測試腳本名稱寫入文件,並跳過當前測試並執行下一個測試腳本。任何想法? – bond007

回答

1

QTP報告說,測試執行在下列情況

  • 應該執行的操作的對象不能被識別
  • 當執行一個動作的動作失敗的一個(例如非法值)
  • 失敗
  • 檢查點失敗,這意味着測試創建者指定了應用程序應該具有的狀態並且它實際上具有不同的值
  • 測試明確地向日志中寫入錯誤(使用Reporter object
+0

除非OP每次都意味着「報告」而不是「檢測」,否則我不確定這是否會回答這個問題。雖然他們的要求並不完全清楚,但也許你是比我更好的讀者;) – Xiaofu

3

由於我實際上在說「編寫你自己的測試執行引擎」,但這對你來說可能是有限的,但它完全可以實現。從小處着手,逐個構建功能,你就能擁有一些很酷的東西,很快就能滿足你自己的獨特需求。

雖然它也許有用的已停止測試趕緊叫了(也許做一個快速的故障診斷,不查看詳細步驟)錯誤,請不要忽視其含有的詳細步驟報告。當測試失敗時,你需要知道什麼地方出了錯,並爲什麼,並有一個什麼樣的行動導致了失敗的記錄。

但是,這裏有一個方法去滿足你的要求:

  1. 使用使用QTP API您所選的支持的語言編寫一個測試驅動程序,並引發QTP一個獨立的運行每個測試。當調用Test.Run你可以控制的結果是使用RunResultsOptions結構保存。在您的測試中,將「運行會話期間發生錯誤時」保留爲「彈出消息框」,以便在發生錯誤時停止。如果你想要不同的行爲,那麼在「錯誤繼續下一次/錯誤轉到0 /檢查錯誤號和錯誤描述」 - 塊時逐個處理它。永遠不要切換到「繼續下一步」。

  2. 檢查LastRunResults結構由Test.LastRunResults返回後的運行完成。 LastRunResults.Status會告訴你運行的狀態,因此,讓你決定是否要繼續步驟#3,提取故障的詳細信息。

  3. 解析results.xml從每個運行後的結果文件夾。它將位於{results folder} \ Report \ results.xml。掃描XML所有失敗的步驟或僅僅是最後一個失敗的步驟是微不足道的,因此您可以獲取步驟詳細信息並以您選擇的格式將其保存到另一個文件。您將會尋找屬性爲eType = User的NodeArgs元素。然後,您可以找到該步驟的狀態和附近的步驟詳細信息。如果除了QTP自動生成的日誌記錄之外,還需要更多關於錯誤的信息,那麼您需要在錯誤發生時捕獲錯誤,並添加一些您自己的Reporter.ReportEvent語句以及更多的突出信息。

  4. 不要放棄你的結果彙總文件好玩的東西...

如果你希望使用QTP本身作爲驅動程序一批測試(即按播放一次,運行所有測試)因此可以從子測試或其他東西中獲得錯誤消息,然後我只會這樣說:除非您只是運行相同測試的多次迭代,否則請不要這樣做。使用QTP本身在單個史詩般的測試運行中運行你所有的測試是一個很糟糕的方式來做事情的原因很多,但我不打算在這裏寫一篇關於它的文章!