《帶你裝B,帶你飛》pytest成神之路2- 執行用例規則和pycharm執行的三種姿態
1. 簡介
今天北京下的雪好大好美啊!!!哎呀,忘記拍照片了,自己想象一下吧。言歸真傳,今天還是開始pytest的學習和修煉,上一篇寫完後群裡反響各式各樣的,幾家歡樂幾家愁,有的高興說自己剛好要用到了,正好一起學習,有的不開心說自己介面還沒有學完了,沒關係的學習本來就不是一件一蹴而就的事情,需要日積月累,不要灰心。慢慢的來,多花點時間,爭取趕上來就好了。嘿嘿!喝了巨集哥的毒雞湯是不是充滿活力,感覺好多了。好,那就開始今天的學習吧!今天主要學習一下pytest的執行用例的規則。
2. 通過help幫助檢視pytest如何使用
1.檢視pytest命令列引數,可以用pytest -h 或pytest --help檢視
3. 用例設計原則
- 檔名以test_*.py檔案和*_test.py
- 以test_開頭的函式
- 以Test開頭的類
- 以test_開頭的方法
- 所有的包pakege必須要有__init__.py檔案
4.開始用例設計
4.1 用例設計目錄
1.為了不必要的麻煩,請按照巨集哥的目錄設計和寫測試用例
4.2 test_bjhg_class.py參考程式碼
# coding=utf-8 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2020-1-06 @author: 北京-巨集哥 Project:《帶你裝B,帶你飛》pytest修煉之路2- 執行用例規則和pycharm執行的三種姿態 ''' # 3.匯入模組 # content of test_bjhg_class.py class TestClass: def test_one(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check') def test_three(self): a = "hello" b = "hello world" assert a in b
4.3 test_bjhg_sample.py參考程式碼
# coding=utf-8 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2020-1-06 @author: 北京-巨集哥 Project:《帶你裝B,帶你飛》pytest修煉之路2- 執行用例規則和pycharm執行的三種姿態 ''' # 3.匯入模組 # content of test_bjhg_sample.py def func(x): return x + 1 def test_answer(): assert func(3) == 5
5. 執行方式
cmd執行pytest用例有三種方法,以下三種方法都可以,一般推薦第一個。簡單、好記、好寫。
- pytest
- py.test
- python -m pytest
如果不帶引數,在某個資料夾下執行時,它會查詢該資料夾下所有的符合條件的用例(檢視用例設計原則)
6. 執行規則
1.執行某個目錄下所有的用例
pytest 檔名/
2.執行某一個py檔案下用例
pytest 指令碼名稱.py
3.-k 按關鍵字匹配
pytest -k “MyClass and not method”
這將執行包含與給定字串表示式匹配的名稱的測試,其中包括Python使用檔名,類名和函式名作為變數的運算子。 上面的例子將執行TestMyClass.test_something但不執行TestMyClass.test_method_simple
4.按節點執行
每個收集的測試都分配了一個唯一的nodeid,它由模組檔名和後跟說明符組成來自引數化的類名,函式名和引數,由:: characters分隔。
執行.py模組裡面的某個函式
pytest test_mod.py::test_func
執行.py模組裡面,測試類裡面的某個方法
pytest test_mod.py::TestClass::test_method
5.標記表示式
pytest -m slow
將執行用@ pytest.mark.slow
裝飾器修飾的所有測試。
6.從包裡面執行
pytest —pyargs pkg.testing
這將匯入pkg.testing
並使用其檔案系統位置來查詢和執行測試。
7.pytest -x( 遇到錯誤時停止測試)
pytest -x test_class.py
從執行結果可以看出,本來有3個用例,第二個用例失敗後就沒繼續往下執行了
8.pytest -maxfail=num(當用例錯誤個數達到指定數量時,停止測試)
pytest --maxfail=1
7. pycharm配置pytest
以pytest方式執行,需要改該工程設定預設的執行器:file->Setting->Tools->Python Integrated Tools->專案名稱->Default test runner->選擇pytest
8. pycharm執行三種方式
上邊已經介紹瞭如何在cmd執行pytest用例,平常我們寫程式碼在pycharm比較多,寫完用例之後,需要除錯看看,是不是能正常執行,如果每次跑去cmd執行,太麻煩,所以很有必要學習如何在pycharm裡面執行pytest用例
8.1xx.py指令碼方式直接執行
1.以xx.py指令碼方式直接執行,當寫的程式碼裡面沒用到unittest和pytest框架時,並且指令碼名稱不是以test_開頭命名的,此時pycharm會以xx.py指令碼方式執行
2.參考程式碼
# coding=utf-8 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2020-1-06 @author: 北京-巨集哥 Project:《帶你裝B,帶你飛》pytest修煉之路2- 執行用例規則和pycharm執行的三種姿態 ''' # 3.匯入模組 def hello(): print("hello world !") if __name__=="__main__": hello()
8.2 以unittest方式執行
1.當指令碼命名為test_xx.py時,用到unittest框架,此時執行程式碼,pycharm會自動識別到以unittest方式執行
8.3 pytest方式執行
1.以pytest方式執行,需要改該工程設定預設的執行器:file->Setting->Tools->Python Integrated Tools->專案名稱->Default test runner->選擇pytest
備註:pytest是可以相容unittest框架程式碼的
9. 趁熱打鐵-pycharm寫pytest程式碼
1.在pycharm裡面寫pytest用例,先匯入pytest
9.1 程式碼實現:
9.2 參考程式碼:
# coding=utf-8 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2020-1-06 @author: 北京-巨集哥 Project:《帶你裝B,帶你飛》pytest修煉之路2- 執行用例規則和pycharm執行的三種姿態 ''' # 3.匯入模組 # content of test_bjhg_class.py import pytest class TestClass: def test_one(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check') def test_three(self): a = "hello" b = "hello world" assert a in b if __name__ == "__main__": pytest.main('-q test_bjhg_class.py')
9.3 執行結果:
1.執行程式碼後,控制檯列印如下圖的結果
2.執行結果“.F. ” 點是代表測試通過,F是Fail的意思,1 warnings是用於pytest.main('-q test_class.py')裡面引數需要傳list,多個引數放list就不會有警告了
pytest.main(['-q', 'test_bjhg_class.py')
10. pycharm設定pytest
1.新建一個工程後,左上角file->Setting->Tools->Python Integrated Tools->專案名稱->Default test runner->選擇pytest
2.改完之後,再重新建個指令碼(注意是先改專案執行方式,再寫程式碼才能出來),接下來右鍵執行就能出來pytest運行了
3.pytest是可以相容unittest指令碼的,之前寫的unittest用例也能用pytest框架去執行
11.小結
好了,今天的分享就到這裡吧!!!謝謝各位的耐心閱讀。有問題加群交流討論!!!
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡