pytest 一.安裝和使用入門


pytest --fixtures Python版本: Python 2.7、3.4、3.5、3.6、Jython、PyPy-2.3
平台:Unix / Posix和windows
PyPI包名稱:pytest
依賴性:py,colorama模塊(Windows),
文檔如PDF:下載最新
pytest是一個使構建簡單和使測試變得容易的框架。測試具有表達性和可讀性——不是固定的代碼在幾分鍾內開始對應用程序或庫進行小型單元測試或復雜的功能測試
安裝pytest
1.運行如下代碼安裝pytest:pip install -U pytest 
2.檢查您安裝的版本是否正確:pytest --version
創建第一個pytest測試程序
下面用四行代碼創建一個簡單的測試函數
# -*- coding: utf-8 -*- # @Time : 2018/7/5 23:57 # @Author : onesilent # @File : FirstTest.py # @Project : PythonTestDemo # content of test_sample.py
def func(x): return x + 1
def test_answer(): assert func(3) == 5
 
 
 
 
 
執行結果如下(注釋:相當於在命令行窗口在當前包下執行pytest,注意:測試文件和測試函數都是以"test_"開頭,test可忽略大小寫,即可以寫成Test)
注意:您可以使用assert語句來驗證測試期望。pytest的高級斷言內省將會智能地報告assert表達式的中間值,這樣您就可以避免unittest遺留的許多名稱方法。
 
運行多個測試
pytest運行將執行當前目錄及其子目錄中所有格式為test_*.py或* _test.py在的py的文件,通俗的說,它遵循探索測試規則。
斷言某些代碼引發的異常
使用raises幫助程序斷言某些代碼引發的異常:(使用斷言捕獲程序異常,pytest -q 是靜默執行,加入-q打印的信息會少,下圖展示靜默執行與非靜默執行
# -*- coding: utf-8 -*- # @Time : 2018/7/10 23:29 # @Author : onesilent # @File : test_sysexit.py # @Project : PythonTestDemo

# content of test_sysexit.py
import pytest def f(): raise SystemExit(1) def test_mytest(): with pytest.raises(SystemExit): f()
 
 
在一個類中組合多個測試
一旦開發了多個測試,您可能希望將它們分組到一個類中。 使用pytest更容易創建測試類
包含多個測試:
# -*- coding: utf-8 -*- # @Time : 2018/7/11 0:00 # @Author : onesilent # @File : test_class.py # @Project : PythonTestDemo # content of test_class.py
class TestClass(object): def test_one(self): x = "this"
        assert 'h' in x def test_two(self): x = "hello"
        assert hasattr(x, 'check')
 
pytest在其Python測試發現約定之后發現所有測試,因此它發現兩個test_前綴功能。 沒有必要繼承任何東西。 我們可以通過傳遞文件名來運行模塊:
 
第一次測試通過,第二次測試失敗。 您可以在斷言中輕松查看中間值以幫助您了解失敗的原因。
注意:測試結果中“.”代表成功,F代表失敗
 
通過請求唯一臨時目錄完成功能測試
pytest提供了Builtin fixture / function參數來請求任意資源,比如一個唯一的臨時目錄:
一下函數執行的tmpdir的默認目錄:C:\Users\onesilent\AppData\Local\Temp\pytest-of-onesilent\pytest-1\test_needsfiles0
# -*- coding: utf-8 -*- # @Time : 2018/7/11 23:57 # @Author : onesilent # @File : test_tmpdir.py # @Project : PythonTestDemo

# content of test_tmpdir.py
def test_needsfiles(tmpdir): print (tmpdir) assert 0

 

 
 
找出pytest fixtures存在哪種內哪些內置命令
 
pytest --fixtures #此命令顯示內置命令和custom fixtures 請注意,除非添加-v選項,否則此命令將省略帶有前導_的 fixtures。

 

 
繼續閱讀
查看其他pytest資源,以幫助您為自己獨特的工作流程自定義測試:
•“通過python -m pytest調用pytest”用於命令行調用示例
•“將pytest與現有測試套件一起使用”以處理預先存在的測試
•“使用屬性標記測試函數”以獲取有關pytest.mark機制的信息
•“pytest fixture:顯式,模塊化,可擴展”,為您的測試提供功能基准
•“編寫插件”,用於管理和編寫插件
•virtualenv和測試布局的“良好集成實踐”
pytest fixture 是pytest的高級功能,后面繼續學習

 


免責聲明!

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



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