python單元測試框架pytest簡介

2022-01-29 領測軟體測試網

1、Pytest介紹

pytest是python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。根據pytest的官方網站介紹,它具有如下特點:

非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考

能夠支持簡單的單元測試和複雜的功能測試

支持參數化

執行測試過程中可以將某些測試跳過,或者對某些預期失敗的case標記成失敗

支持重複執行失敗的case

支持運行由nose, unittest編寫的測試case

具有很多第三方插件,並且可以自定義擴展

方便的和持續集成工具集成

由於網上pytest的中文文檔比較少,自己學習過程中,基本上看的就是英文的官方文檔,對於不想看英文的同學們,本系列文章希望能夠幫大家一馬。

2、安裝pytest

與安裝其他的python軟體無異,直接使用pip安裝。

[python] view plain copy

pip install -U pytest  

安裝完成後,可以驗證安裝的版本:

[python] view plain copy

py.test --version  

3、一個實例

我們可以通過下面的實例,看看使用py.test進行測試是多麼簡單。

[python] view plain copy

  

  

def func(x):  

    return x+1  

  

def test_func():  

    assert func(3) == 5  

這裡我們定義了一個被測試函數func,該函數將傳遞進來的參數加1後返回。我們還定義了一個測試函數test_func用來對func進行測試。test_func中我們使用基本的斷言語句assert來對結果進行驗證。

下面來運行這個測試:

[python] view plain copy

$ py.test  

=========================== test session starts ============================  

platform linux -- Python 3.4.1 -- py-1.4.27 -- pytest-2.7.1  

rootdir: /tmp/doc-exec-101, inifile:  

collected 1 items  

test_sample.py F  

================================= FAILURES =================================  

_______________________________ test_answer ________________________________  

def test_answer():  

> assert func(3) == 5  

E assert 4 == 5  

E + where 4 = func(3)  

test_sample.py:5: AssertionError  

========================= 1 failed in 0.01 seconds =========================  

執行測試的時候,我們只需要在測試文件test_sample所在的目錄下,運行py.test即可。pytest會在當前的目錄下,尋找以test開頭的文件(即測試文件),找到測試文件之後,進入到測試文件中尋找test_開頭的測試函數並執行。

通過上面的測試輸出,我們可以看到該測試過程中,一個收集到了一個測試函數,測試結果是失敗的(標記為F),並且在FAILURES部分輸出了詳細的錯誤信息,幫助我們分析測試原因,我們可以看到"assert func(3) == 5"這條語句出錯了,錯誤的原因是func(3)=4,然後我們斷言func(3) 等於 5。

4、再一個實例

當需要編寫多個測試樣例的時候,我們可以將其放到一個測試類當中,如:

[python] view plain copy

  

  

class TestClass:  

    def test_one(self):  

        x = "this"  

        assert 'h' in x  

  

    def test_two(self):  

        x = "hello"  

        assert hasattr(x, 'check')  

我們可以通過執行測試文件的方法,執行上面的測試:

[python] view plain copy

$ py.test -q test_class.py  

.F  

================================= FAILURES =================================  

____________________________ TestClass.test_two ____________________________  

self = <test_class.TestClass object at 0x7fbf54cf5668>  

def test_two(self):  

x = "hello"  

> assert hasattr(x, 'check')  

E assert hasattr('hello', 'check')  

test_class.py:8: AssertionError  

1 failed, 1 passed in 0.01 seconds  

從測試結果中可以看到,該測試共執行了兩個測試樣例,一個失敗一個成功。同樣,我們也看到失敗樣例的詳細信息,和執行過程中的中間結果。

5、如何編寫pytest測試樣例

通過上面2個實例,我們發現編寫pytest測試樣例非常簡單,只需要按照下面的規則:

6、如何執行pytest測試樣例

執行測試樣例的方法很多種,上面第一個實例是直接執行py.test,第二個實例是傳遞了測試文件給py.test。其實py.test有好多種方法執行測試:

[python] view plain copy

py.test                 

py.test test_mod.py     

py.test somepath        

py.test -k stringexpr   

                        

                        

                        

py.test test_mod.py::test_func   

                     

                                 

7、測試報告

pytest可以方便的生成測試報告,即可以生成HTML的測試報告,也可以生成XML格式的測試報告用來與持續集成工具集成。

生成HTML格式報告:

[python] view plain copy

py.test --resultlog=path  

生成XML格式的報告:

[python] view plain copy

py.test --junitxml=path  

8、如何獲取幫助信息

[python] view plain copy

py.test --version   

py.test --fixtures   

py.test -h | --help   

9、最佳實踐

其實對於測試而言,特別是在持續集成環境中,我們的所有測試最好是在虛擬環境中。這樣不同的虛擬環境中的測試不會相互幹擾的。

由於我們的實際工作中,在同一個Jekins中,運行了好多種不同項目冊的測試,因此,各個測試項目運行在各自的虛擬環境中。

將pytest安裝在虛擬環境中:

1、將當前目錄創建為虛擬環境

[python] view plain copy

virtualenv .          

source bin/activate   

2、在虛擬環境中安裝pytest:

[python] view plain copy

pip install pytest  

 

以下列出,微信,微博,QQ群,論壇,等交流方式。

 
QQ群:領測老賀聊軟體測試 22386432
微信公眾號: 領測軟體測試網
新浪微博:領測軟體測試
喜馬拉雅訂閱頻道:http://www.ximalaya.com/2581641/album/6011135
蜻蜓FM訂閱頻道:http://www.qingting.fm/#/vchannels/198184

蘋果廣播:搜索「領測老賀」

荔枝FM:FM1663127 領測老賀聊軟體測試

       目前暫定每周不定期更新,您的關注,轉發,打賞就是我們堅持的動力!     

加入領測老賀聊測試QQ群可掃描下面的二維碼

相關焦點

  • Python測試框架之unittest和pytest
    目前搜狗商城接口測試框架用的是unittest+HTMLTestRunner,case數有1097條,目前運行一次自動化測試,時長約為30分鐘,期望控制在
  • python3.6編寫的單元測試示例
    ,需要的朋友可以參考下本文實例講述了python3.6編寫的單元測試。分享給大家供大家參考,具體如下:使用python3.6編寫一個單元測試demo,例如:對學生Student類編寫一個簡單的單元測試。
  • Python自動化測試框架神器--Pytest!
    Pytest是一個非常成熟的全功能的Python測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,功能更強大。適合簡單的單元測試到複雜的功能測試。還可以執行 nose, unittest 和 doctest 風格的測試用例。支持良好的集成實踐, 支持擴展的 xUnit 風格 setup,支持非 Python 測試。支持生成測試覆蓋率報告,支持 PEP8 兼容的編碼風格。2.
  • Pytest 測試框架入門
    本文作者:劉春明原文連結:http://blog.csdn.net/liuchunming033/1、 Pytest 介紹pytest 是 python 的一種單元測試框架,與 python 自帶的 unittest 測試框架類似,但是比 unittest 框架使用起來更簡潔,效率更高。
  • Python 測試框架之 Unittest & Pytest
    Unittest是Python自帶的一個單元測試框架Unittest
  • 手把手教你pytest測試框架
    好了,下面正題開始~pytest測試框架簡介pytest是Python的測試框架,類似於unittest,但比unittest更簡潔,直接,易上手,功能更強大,且可兼容unittest的代碼。它可以實現,執行用例時跳過某些用例、用例執行失敗後可重新執行、對執行失敗的用例進行標記等。
  • 使用Pytest創建一個Python測試自動化項目
    自然地,Python還是測試自動化的最好的語言。它的簡潔性使測試人員可以將更多的精力放在測試上,而不必在代碼上。未完成大量編程工作的測試人員往往比其他語言(如Java或C#)學習Python的速度更快。Python非常適合啟動測試!什麼是pytest?任何功能測試自動化項目的核心都是「核心」測試框架。該框架處理測試用例結構,測試執行以及通過/失敗結果報告。
  • PyTest測試框架總結篇一 ~ 框架介紹、斷言、跳過及運行
    今天我們來說說pytest測試框架,剛好個人也總結下~首先,pytest是一個非常成熟的全功能的Python測試框架,主要特點有以下幾點:1.簡單靈活,容易上手,文檔豐富;2.支持參數化,可以細粒度地控制要測試的測試用例;3.能夠支持簡單的單元測試和複雜的功能測試,還可以結合selenium、appnium等自動化測試、接口自動化測試
  • Pytest 測試框架——數據驅動
    這是無量測試之道的第181篇原創引言前面的推文已經和大家介紹過 Unittest 測試框架的數據驅動框架 DDT,以及其實現原理
  • pytest按tag動態挑選測試用例
    pytest是個成熟全套的python 自動化測試工具。
  • Pytest的簡單應用
    一、Pytest介紹Pytest是基於python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。1、特性:非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考能夠支持簡單的單元測試和複雜的功能測試支持參數化執行測試過程中可以將某些測試跳過,或者對某些預期失敗的case標記成失敗支持重複執行失敗的case支持運行由nose, unittest編寫的測試case具有很多第三方插件,並且可以自定義擴展方便的和持續集成工具集成2、常用拓展
  • Python測試開發庫及項目(超全面!)
    https://github.com/nose-devs/nose2pytest- 很好的強大的單元測試框架,實際上廣泛使用在自動化單元、接口、功能等測試。https://github.com/pytest-dev/pytest -- 強烈推薦 參考:https://china-testing.github.io/python_pytest_testing1.htmltestify - 單元測試框架,提供增強的測試fixture設置,將測試套件拆分成易於並行化的存儲
  • 如何使用python socket模塊實現簡單的文件下載
    python中pytest收集用例規則與運行指定用例詳解python pytest進階之xunit fixture詳解python使用pytest接口自動化測試的使用python單元測試之pytest的使用pytest基本用法簡介pycharm中使用request和Pytest進行接口測試的方法通過代碼實例解析Pytest運行流程pycharm不以pytest
  • Pytest安裝和入門
    Pytest是一個非常成熟的全功能的python測試框架,主要有以下幾個特點:簡單靈活,容易上手支持參數化
  • Python文件名的匹配之clob庫
    python中pytest收集用例規則與運行指定用例詳解python pytest進階之xunit fixture詳解python使用pytest接口自動化測試的使用python單元測試之pytest的使用pytest基本用法簡介pycharm中使用request和Pytest進行接口測試的方法通過代碼實例解析Pytest運行流程pycharm不以pytest
  • 【Pytest篇】Allure生成漂亮的HTML圖形化測試報告(一))
    一、Allure測試報告介紹Allure是一款非常輕量級並且非常靈活的開源測試報告生成框架。
  • Pytest自動化測試-簡易入門教程
    原文:https://www.cnblogs.com/leozhanggg/p/14035202.html一、簡介pytest是動態程式語言Python專用的測試框架,它具有易於上手、功能強大、可擴展性好、兼容性強、效率高、第三方插件豐富等特點。
  • Pytest進行UI自動化測試實用操作
    背景在UI自動化測試中,很多都使用selenium結合unitest框架進行自動化測試,unittest框架是python自帶框架,但unittest不夠靈活,例如:用例前置和後置unittest提供了setUp/tearDown,都是針對所有用例執行,不能單獨執行失敗用例,也不能單獨執行標記用例,並且unittest要遵循一定格式。
  • 使用AirtestProject+pytest做支付寶小程序UI自動化測試
    一,前言1 背景因公司業務需要做支付寶小程序的UI自動化測試,於是在網上查找小程序的自動化資料,發現微信小程序是有自己的測試框架的,但幾乎找不到支付寶小程序UI自動化測試相關的資料。白piao失敗,那就只能自己從零開始整了。
  • 7k Star 的 Python 測試框架入門指南
    Pytest 是一款 Python 測試框架及測試運行器。在本指南中,我們將會介紹 pytest 最有用和常見的配置和用法,以及幾個 pytest 插件和外部庫。儘管 Python 的標準庫中已經自帶了 unittest 模塊,並且也還有其他 Python 測試框架(例如 nose2 或 Ward),但 pytest 仍然是我的最愛。