《帶你裝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.小結

 好了,今天的分享就到這里吧!!!謝謝各位的耐心閱讀。有問題加群交流討論!!!

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波  推薦  不要忘記哦!!!

別忘了點 推薦 留下您來過的痕跡

 

 


免責聲明!

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



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