【pytest】pytest使用及conftest.py使用


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范圍。

fixture使用
conftest使用

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()


免責聲明!

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



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