【pytest】pytest使用及conftest.py使用
阿新 • • 發佈:2021-09-30
pytest和自帶的unittest對比
-
unittest
1、是python整合的,使用方便,也更廣泛。
2、可以使用@ddt引數化
3、最多針對(模組)類級別的setup/teardown -
pytest
1、支援引數化,但是沒有unittest靈活
2、用例失敗自動截圖,pytest-html + conftest.py
3、全域性的setup/teardown conftest.py
4、用例失敗重跑,pytest-rerunfailures 重跑的外掛
pytest使用
安裝
預設源安裝:
pip install pytest
用國內清華大學的源:
pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple
參考:
下載安裝慢,使用使用國內清華大學的源
pytest用例
# AddFunc.py class AddFunc: def __init__(self,a,b,*args): self.a = a self.b = b self.other = args def add(self): sum_a = self.a + self.b if self.other: for o in self.other: sum_a += o return sum_a
# test_add.py from com.**.** import AddFunc def test_add_2num(): a = AddFunc.AddFunc(1,2) result = a.add() assert result == 3 def test_add_3num(): a = AddFunc.AddFunc(1,2,3) result = a.add() assert result == 6 def test_add_4num(): a = AddFunc.AddFunc(1,2,3,5) result = a.add() assert result == 11
pytest命令
1、 pytest
預設查詢當前路徑下(遞迴查)所有test_*.py
和*_test.py
檔案中所有的test_
開頭的用例
2、 在測試檔案中查詢Test
開頭的類,以及類中以test
開頭的方法,查詢測試檔案中test
開頭的函式。
tips: 測試類的不應該有建構函式。
3、執行指定檔案中的用例pytest test_case/test_add.py::test_add_2num
-s: 顯示程式中的print/logging輸出
-v: 豐富資訊模式, 輸出更詳細的用例執行資訊
-q: 安靜模式, 不輸出環境資訊
-k:關鍵字模糊匹配,用and區分:匹配範圍(檔名、類名、函式名)
4、 直接使用python命令python run.py
# run.py
if __name__ == '__main__':
pytest.main(['-s', '-v']) #執行檔案所在目錄下的所有用例
fixture及conftest.py使用
- 有獨立的命名,並通過宣告它們從測試函式、模組、類或整個專案中的使用來啟用。
- 按模組化的方式實現,每個fixture都可以互相呼叫。
- fixture的範圍從簡單的單元擴充套件到複雜的功能測試,允許根據配置和元件選項對fixture和測試用例進行引數化,或者跨函式function、類class、模組module或整個測試會話session範圍。
import pytest
from selenium import webdriver
@pytest.fixture(scope="session", autouse=True)
def browser():
'''
開啟瀏覽器
定義全域性瀏覽器驅動
:return:
'''
global driver
driver = webdriver.Chrome()
driver.maximize_window()
return driver
@pytest.fixture(scope="session", autouse=True)
def closebrowser():
print("關閉瀏覽器")
yield # 執行到這需要暫停
driver.quit()