Pytest 快速開始

我們先來感受一下 Pytest 的用例,老規矩——待測函數依然是 add()

  • 首先你要保證你已下載 pytest:pip install pytest
  • 然後再找個文件夾新建一個 test_demo.py 文件
    最後寫下如下內容:

test_demo.py

import pytest

# 待測函數
def add(a, b):
    return a + b

def test_str():
    """測試字符串"""
    a, b = '1', '2'
    assert add(a, b) == '112'  # => 注意這裏故意搞了個失敗

def test_int():
    """測試整型"""
    a, b = 1, 2
    assert add(a, b) == 3

if __name__ == '__main__':
    pytest.main()

寫法上和 unittest 很類似。不管是文件名還是用例名,都必須以test_開頭,如test_add.pytest_str()不要去違反它!

我們寫了兩個測試用例,test_strtest_int,在 pytest 裏面不拘於測試的形式,類方法和函數都可以,而 xunit 框架必須要寫成用例方法。

Pytest 中並沒有定義特定的斷言函數,直接使用原生的assert語句即可,並且豐富了 assert 異常時的結果輸出。

pytest.main()是 pytest 的運行函數,會自動查找當前文件夾(注意是當前文件所在的目錄)的所有用例。

我們直接運行這個文件(如果你用的是 Pycharm 並且設置了默認測試運行框架是 pytest,那麼結果並不是由 pytest.main() 生成的,而是由 Pycharm 中自動調用 pytest 框架執行的結果):

其中每一項已經給大家標記出來了,可以瞭解一下 pytest 結果中每種含義。這裏面特別需要大家注意的一個概念就是 session,在 pytest 中把當次測試的運行過程(可以是一個指定的用例、用例文件或者測試項目),反正也就是說 pytest 的一次運行過程就是一個 session,這個過程到底運行多少用例取決於 pytest 根據你的指令找到了多少。

理解 session 對我們有什麼用呢,以後測試固件的範圍可以定義到 session 級別,這將是一個非常有價值的功能,unittest 是做不到的。能做到哪些呢?

  • 整個測試過程只啓動一次瀏覽器,不管其中有多少用例;
  • 定義一些整個測試過程中都會用到的全局變量,比如處理接口的依賴;
  • 整個測試的環境初始化與環境清理;

以後再補充😡。

其他字段,相信大家都能見文知意。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章