1. 程式人生 > >【Python】【pytest】【常用命令列選項】

【Python】【pytest】【常用命令列選項】

https://www.cnblogs.com/cnkemi/p/9989019.html
http://www.cnblogs.com/cnkemi/p/10002788.html

pytest 常用命令列選項(一)

  pytest有豐富的命令列選項,以滿足不同的需要,下面對常用的命令列選項作下簡單介紹。 上文已經使用過-v選項,還有很多選項,你可以使用pytest --help檢視全部選項。如下圖:

    

  1、--collect -only 選項

  使用--collect -only選項可以展示在給定配置下哪些用例會被執行。讓你方便地在測試執行之前,檢查用例是否符合預期。如下例:

  

  2、-k 選項

   -k 選項允許你使用表示式指定希望執行的測試用例。假設希望選中test_asdict()和test_defaults(),那麼可以用代表式"asdict or defaults"來篩選。結合-v或者--verbose檢視是否符合預期,如下圖:

  

  3、-m 選項

  標記(marker)用於標記測試並分組,以便快速選中並執行。以test_replace()和test_member_access()為例,它們甚至都不在同一個檔案裡,如果希望同時執行它們,那麼可以預先做好標記。

  這裡使用什麼標記名由你自己決定,比如使用run_these_case,則可以用@pytest.mark.run_these_case這樣的裝飾器(decorator)來標記,如下所示:

  import pytest ...

  @pytest.mark.run_these_case

  def test_member_access():

  ...

  給test_replace()也做上同樣的標記。有相同標記的測試用例,可以一起執行。使用pytest -m run_these_case命令就可以同時執行test_replace()和test_member_access()。如下圖:

  

  使用-m選項還可以用表示式指定多個標記各。使用-m "mark1 and mark2"可以同時選中帶有這兩個標記的所有測試用例。使用-m "mark1 and not mark2"則會選中帶有mark1的測試用例,而過濾帶有mark2的測試用例;使用-m "mark1 or mark2"則選中帶有mark1或者mark2的所有測試用例。

  4、-x 選項

  正常情況下,pytest會執行每一個搜尋到的測試用例。如果某下測試函式被斷言失敗,或者觸發了外部異常,則該測試用例的執行就會到此為止,pytest將其標記為失敗後會繼續執行下一個測試用例。通常,這是我們期望的執行模式。但如果希望在遇到失敗時立即停止整個會話,這時-x選項就派上用場了。如用-x選項執行之前的6個測試用例,如下:

  

  輸出資訊開頭顯示pytest收集到6個測試條目,末尾顯示有1個通過,1個失敗。如果沒有-x選項,那麼6個測試都會被執行,即使遇到測試失敗,但沒有停止後面的測試用例。如下圖:

  

  5、--maxfail==num選項

  -x選項的特點是, 一旦遇到測試失敗,就會全域性停止。如果你希望pytest失敗幾次後再停止,則可以使用--maxfail選項,明確指定要以失敗幾次。 如設定--maxfail=2,則需要遇到兩次錯誤才會停止,這樣前面只存在一個失敗測試的就會全都被執行。如下圖:

  

  So如設定--maxfail=1,在這裡就與前面的-x作用相同。

  6、--lf(--last-failed)選項 當一個或者多個測試失敗時,我們常常希望能夠定位到最後一個失敗的測試用例重新執行,這時可以使用--lf選項。如下圖:

  

  7、--ff(--failed-first)選項 此選項與上面的--lf(--last-failed)選項的作用基本相同,不同之處在於--ff會執行完剩餘的測試用例。如下圖:

  

  由於test_failing()是在test_two.py檔案中,因此通常會在test_one.py之後執行,但是在--ff選項作用下,test_failing()前一輪被認定為失敗,會被首先執行。

8、-v(--verbose) 選項

  使用-v/--verbose選項,輸出的資訊會更詳細。最明顯的區別就是每個檔案中的每個測試用例都佔一行,測試的名字和結果都會顯示出來,而不僅僅是一個點或字元。如下圖:

  

  在彩色顯示器上可以看到FAILED標記為紅色,PASSED標記為綠色。

  9、-q(--quiet)選項

  該選項的作用與-v/--verbose的相反,它會簡化輸出資訊。如下圖:

  

  使用-q選項會簡化輸出資訊,只保留最核心的內容。

  10、--tb=style 選項

  --tb=style選項決定捕捉到失敗時輸出資訊的顯示方式。某個測試用例失敗後,pytest會列舉出失敗資訊,包括失敗出現在哪一行、是什麼失敗、怎麼失敗的,此過程我們稱之為“資訊回溯”。大多數情況下,資訊回溯是有必要的,它對找到問題很有幫助,但有時也會對多餘的資訊感到厭煩,這時--tb=style選項就有用武之地了。常用的style型別有short、line、no。short模式僅輸出assert的一行以及系統判定內容(不顯示上下文);line模式只使用一行輸出顯示所有的錯誤資訊;no模式則直接遮蔽全部回溯資訊。

  使用--tb=no遮蔽全部回溯資訊。如下圖:

  

  使用--tb=line,它可以告訴錯誤的位置,如下圖:

  

  使用--tb=short,顯示的回溯資訊比前面兩種模式的更詳細。如下圖:

  

   除此之外,還有--tb=long輸出最為詳盡的回溯資訊;--tb=auto是預設值,如果有多個測試用例失敗,僅列印第一個和最後一個用例的回溯資訊(格式與long模式一致);--tb=native只輸出Python標準庫的回溯資訊,不顯示額外資訊。

  11、--version 選項

  使用--version可以顯示當前的pytest版本及當前目錄。如下圖:

  

  由於是用python pip命令安裝的,所以會顯示對就的site-packages目錄。

  12、-h(--help)選項

  即使你已經熟練使用pytest,-h選項依然非常有用,它不但能展示原生的pytest的用法,還能展示新新增的外掛的選項和用法。

  使用-h選項可以獲得:

  . 基本用法:pytest [options] [file_or_dir] [file_or_dir] [...]

  . 命令列選項及其用法,包括新新增的外掛的選項及其用法。

  . 可用於ini配置檔案中的選項。

  . 影響pytest行為的環境變數。

  . 使用pytest --markers時的可用marker列表。

  . 使用pytest --fixtures時的可用fixture列表。

  幫助資訊最後會顯示一句話:

  shown according to specified file_or_dir or current dir if not specified

  這句話的意思為:顯示結果取決於指定的檔案或目錄,未指定的則預設使用當前目錄和檔案。這句話非常重要,選項、marker、fixture都會因為目錄的變化而發生變化。