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()前一輪被認定為失敗,會被首先執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM