Pytest官方教程-24-片狀測試

目錄:

  1. 安裝及入門
  2. 使用和調用方法
  3. 原有TestSuite使用方法
  4. 斷言的編寫和報告
  5. Pytest fixtures:清晰 模塊化 易擴展
  6. 使用Marks標記測試用例
  7. Monkeypatching/對模塊和環境進行Mock
  8. 使用tmp目錄和文件
  9. 捕獲stdout及stderr輸出
  10. 捕獲警告信息
  11. 模塊及測試文件中集成doctest測試
  12. skip及xfail: 處理不能成功的測試用例
  13. Fixture方法及測試用例的參數化
  14. 緩存: 使用跨執行狀態
  15. unittest.TestCase支持
  16. 運行Nose用例
  17. 經典xUnit風格的setup/teardown
  18. 安裝和使用插件
  19. 插件編寫
  20. 編寫鉤子(hook)方法
  21. 運行日志
  22. API參考
    1. 方法(Functions)
    2. 標記(Marks)
    3. 鉤子(Hooks)
    4. 裝置(Fixtures)
    5. 對象(Objects)
    6. 特殊變量(Special Variables)
    7. 環境變量(Environment Variables)
    8. 配置選項(Configuration Options)
  23. 優質集成實踐
  24. 片狀測試
  25. Pytest導入機制及sys.path/PYTHONPATH
  26. 配置選項
  27. 示例及自定義技巧
  28. Bash自動補全設置

片狀”測試是表現出間歇性或偶發性失敗的測試,似乎具有非確定性行為。有時它會通過,有時會失敗,而且不清楚為什么。本頁討論了可以提供幫助的pytest功能以及識別,修復或減輕它們的其他一般策略。

為什么片狀測試是個問題

當使用連續集成(CI)服務器時,片狀測試尤其麻煩,因此在合并新代碼更改之前必須通過所有測試。如果測試結果不是一個可靠的信號 - 測試失敗意味著代碼更改破壞了測試 - 開發人員可能會對測試結果產生不信任,這可能導致忽略真正的失敗。它也是浪費時間的一個來源,因為開發人員必須重新運行測試套件并調查虛假故障。

潛在的根本原因

系統狀態

從廣義上講,一個片狀測試表明測試依賴于一些未被適當控制的系統狀態 - 測試環境沒有充分隔離。更高級別的測試更有可能是因為他們依賴更多的狀態。

當測試套件并行運行時(例如使用pytest-xdist),有時會出現片狀測試。這可以表明測試依賴于測試排序。

  • 也許不同的測試是在自身之后無法清理并留下導致片狀測試失敗的數據。
  • 片狀測試依賴于先前測試的數據,該測試不會自行清理,并且并行運行以前的測試并不總是存在
  • 修改全局狀態的測試通常不能并行運行。

過于嚴格的斷言

過于嚴格的斷言可能會導致浮點比較以及時序問題。pytest.approx在這里很有用。

Pytest功能

Xfail嚴格

pytest.mark.xfail withstrict=False可用于標記測試,以便其失敗不會導致整個構建中斷。這可以被視為手動隔離,永久使用是相當危險的。

PYTEST_CURRENT_TEST

PYTEST_CURRENT_TEST環境變量可用于確定“哪個測試卡住了”。

插件

重新運行任何失敗的測試可以通過給予他們額外的機會來減輕片狀測試的負面影響,這樣整體構建就不會失敗。幾個pytest插件支持這個:

故意隨機化測試的插件可以幫助公開測試狀態問題:

其他一般策略

拆分測試套件

將單個測試套件拆分為兩個是常見的,例如單元與集成,并且僅將單元測試套件用作CI門。這也有助于保持構建時間的可管理性,因為高級別測試往往更慢。但是,這意味著打破構建的代碼可能會合并,因此需要額外的警惕來監視集成測試結果。

失敗的視頻/截圖

對于UI測試,這些對于了解測試失敗時UI的狀態非常重要。pytest-splinter可以與pytest-bdd這樣的插件一起使用,并且可以在測試失敗時保存屏幕截圖,這有助于隔離原因。

刪除或重寫測試

如果其他測試涵蓋了該功能,則可能會刪除該測試。如果沒有,也許它可以在較低的水平重寫,這將消除片狀或使其來源更明顯。

隔離

Mark Lapierre 在2018年的一篇文章中討論了隔離測試的優缺點。

在失敗時重新運行的CI工具

Azure管道(Azure云CI / CD工具,以前稱為Visual Studio Team Services或VSTS)具有識別片狀測試和重新運行失敗測試的功能。

研究

這是一個有限的列表,請提交問題或拉取請求以擴展它!

  • Gao,Zebao,Yalan Liang,Myra B. Cohen,Atif M. Memon和Zhen Wang。“使系統用戶交互式測試可重復:何時以及我們應該控制什么?”在軟件工程(ICSE),2015 IEEE / ACM第37屆IEEE國際會議上,第一卷。1,pp.55-65。IEEE,2015年 PDF
  • Palomba,Fabio和Andy Zaidman。“測試氣味的重構是否會導致固定片狀測試?”在軟件維護和演進(ICSME),2017 IEEE國際會議上,第1-12頁。IEEE,2017.Google Drive中的PDF
  • Bell,Jonathan,Owolabi Legunsen,Michael Hilton,Lamyaa Eloussi,Tifany Yung和Darko Marinov。“DeFlaker:自動檢測片狀測試。”在2018年國際軟件工程會議論文集中。2018. PDF

資源

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

推薦閱讀更多精彩內容