欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解pytest傳遞參數(shù)的幾種方式

 更新時間:2024年03月28日 09:31:36   作者:LetsStudy  
本文主要介紹了詳解pytest傳遞參數(shù)的幾種方式,詳細(xì)的介紹了4種傳參方式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

 

測試類內(nèi)部,屬性傳遞

import pytest

class Test_Case:
    t = 0

    def test_c(self):
        self.t = self.t + 1
        assert self.t == 1

    def test_d(self):
        self.t = self.t + 1
        assert self.t == 1

# t是測試類的屬性,可以為所有測試方法共享該值,該值是固定不變的

global方式傳遞

import pytest

s = {}


class Test_Case:
    
    def test_b(self):
        global s
        s['name'] = 'hello'
        print(s['name'])
        assert s['name'] == 'hello'

    def test_c(self):
        global s
        s['age'] = 18
        print(s)
        assert s['age'] == 18


# global聲明的變量可以在整個測試類中共享,值是可變的,global可以去掉,效果相同

@pytest.mark.parametrize()

import pytest

class Test_Case:
    @pytest.mark.parametrize("x", [1, 2, 3, 4])  # 傳遞單個值
    def test_b(self, x):
        assert x != 5

    @pytest.mark.parametrize("x,y", [(1, 2), (3, 4), (2, 3), (4, 6)])  # 多參數(shù),傳遞元組
    def test_c(self, x, y):
        print(x + y)
        assert x + y != 5

    @pytest.mark.parametrize("x,y", [{1, 2}, {3, 4}, {2, 3}, {4, 6}])  # 多參數(shù)傳遞集合
    def test_d(self, x, y):
        print(x + y)
        assert x + y != 6

    @pytest.mark.parametrize("x", [{"a": 1, "b": 2}, {"a": 1, "c": 4}])  # 傳遞字典
    def test_e(self, x):
        print(x)
        assert x["a"] == 1

    @pytest.mark.parametrize("x,y", [({"a": 1, "b": 2}, {"a": 3, "c": 4})])  # 多參數(shù)傳遞字典
    def test_f(self, x, y):
        assert x["a"] == 1

    @pytest.mark.parametrize("x", [{"a": 1, "b": 2}])  # 裝飾器疊加,傳遞多參數(shù)
    @pytest.mark.parametrize("y", [{"a": 1, "b": 2}])
    def test_g(self, x, y):
        assert y["a"] == 1

    @pytest.mark.parametrize(
        "test_input,expected",
        [("3+5", 8), ("2+4", 6), pytest.param("6*9", 42, marks=pytest.mark.xfail)],
    )  # xfail標(biāo)記
    def test_h(self, test_input, expected):
        assert eval(test_input) == expected

    @pytest.mark.parametrize(
        "test_input,expected",
        [("3+5", 8), ("2+4", 6), pytest.param("6*9", 42, marks=pytest.mark.skip)],
    )  # skip標(biāo)記
    def test_i(self, test_input, expected):
        assert eval(test_input) == expected

fixtrue傳遞

import pytest

class Test_Case:

    @pytest.fixture
    def get_d(self):  # 通過fixture值傳遞
        return [1, 2, 3]

    def test_a(self, get_d):
        x = get_d[0]
        assert x == 1
import pytest

class Test_Case:
# params = 'hello'等同于params = ['h','e','l','l','o']
    @pytest.fixture(params='hello') 
    def get_c(self, request):
        print(request.param)
        return request.param

    def test_c(self, get_c):
        name = get_c
        assert name == 'h'

    @pytest.fixture(params=[1, 2], ids=['hello', 'name'])  # 可以通過pytest -k <ids>執(zhí)行指定的用例
    def get_d(self, request):
        return request.param

    def test_d(self, get_d):
        name = get_d
        assert name == 2

    @pytest.fixture(params=[0, 1, pytest.param(2, marks=pytest.mark.skip)])
    def data_set(self, request):
        return request.param

    def test_f(self):
        pass
import pytest

#fixture嵌套傳遞
class Test_Case:

    @pytest.fixture(params=[0, 1, pytest.param(2, marks=pytest.mark.skip)])
    def data_set(self, request):
        return request.param

    @pytest.fixture()
    def data_s(self, data_set):
        print(data_set)
        return data_set

    def test_g(self, data_s):
        assert data_s == 1
# yield傳遞
import pytest

class Test_Case:
    @pytest.fixture
    def s(self):
        c = 'test'
        yield c

    def test_name(self, s):
        assert s == "test"

配置文件傳遞

# test_case.py
import pytest
import _case.constant as d

class Test_Case:

    def test_g(self):
        d.data = 2
        assert d.data == 2

    def test_h(self):
        assert d.data == 2

# _case.constant.py
data = 1

# 和global使用類似,多個測試文件共享值,但是多個文件共享該值時,會收到測試文件的執(zhí)行順序影響
#  global只能在一個測試文件中共享值

conftest.py

# conftest.py最好是在項目根目錄或者測試文件所在目錄
import pytest

@pytest.fixture(scope='session')
def say():
    return 'hello'

# test_case.py
import pytest


class Test_Case:

    def test_g(self, say):
        assert say == 'hello'

命令行參數(shù)傳參

# conftest.py   全局變量使用
import pytest

def pytest_addoption(parser):
    parser.addoption("--file", default="test")

@pytest.fixture
def file_name(request):
    return request.config.getoption("--file")

# test_case.py
import pytest


class Test_Case:

    def test_name(self, file_name):
        assert file_name == "test"

# test_case.py或者直接在測試文件中通過pytestconfig獲取,示例如下
    def test_name(self, pytestconfig):
        print(pytestconfig.getoption('file'))
        assert pytestconfig.getoption("file") == "test"

鉤子函數(shù)傳參

# conftest.py
import pytest

def pytest_addoption(parser):
    parser.addoption("--file", default="test")

def pytest_generate_tests(metafunc):
    file = metafunc.config.getoption('--file')
    metafunc.parametrize("case_data", [file])

# test_case.py
import pytest


class Test_Case:

    def test_g(self, case_data):
        assert case_data == 'test'

到此這篇關(guān)于詳解pytest傳遞參數(shù)的幾種方式的文章就介紹到這了,更多相關(guān)pytest傳遞參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

 

相關(guān)文章

  • Python實現(xiàn)自動登錄百度空間的方法

    Python實現(xiàn)自動登錄百度空間的方法

    這篇文章主要介紹了Python實現(xiàn)自動登錄百度空間的方法,涉及Python的http請求發(fā)送、獲取響應(yīng)、cookie操作等相關(guān)技巧,需要的朋友可以參考下
    2017-06-06
  • python+POP3實現(xiàn)批量下載郵件附件

    python+POP3實現(xiàn)批量下載郵件附件

    這篇文章主要為大家詳細(xì)介紹了python+POP3實現(xiàn)批量下載郵件附件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python lambda 匿名函數(shù)優(yōu)點(diǎn)和局限性深度總結(jié)

    Python lambda 匿名函數(shù)優(yōu)點(diǎn)和局限性深度總結(jié)

    這篇文章主要為大家介紹了Python lambda 匿名函數(shù)的優(yōu)點(diǎn)和局限性深度總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • python判斷設(shè)備是否聯(lián)網(wǎng)的方法

    python判斷設(shè)備是否聯(lián)網(wǎng)的方法

    這篇文章主要為大家詳細(xì)介紹了python判斷設(shè)備是否聯(lián)網(wǎng)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python調(diào)用HEG工具批量處理MODIS數(shù)據(jù)的方法及注意事項

    python調(diào)用HEG工具批量處理MODIS數(shù)據(jù)的方法及注意事項

    這篇文章主要介紹了python調(diào)用HEG工具批量處理MODIS數(shù)據(jù)的方法,本文給大家提到了注意事項,通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • python3+telnetlib實現(xiàn)簡單自動測試示例詳解

    python3+telnetlib實現(xiàn)簡單自動測試示例詳解

    telnetlib 模塊提供一個實現(xiàn)Telnet協(xié)議的類 Telnet,本文重點(diǎn)給大家介紹python3+telnetlib實現(xiàn)簡單自動測試示例詳解,需要的朋友可以參考下
    2021-08-08
  • Python生成器與迭代器詳情

    Python生成器與迭代器詳情

    這篇文章主要介紹了Python生成器與迭代器,現(xiàn)在可以通過生成器來直接創(chuàng)建一個列表,是由于內(nèi)存的限制,表的容量肯定是有限的,果我們需要一個包含幾百個元素的列表,是每次訪問的時候只訪問其中的幾個,剩下的元素不使用就很浪費(fèi)內(nèi)存空間,下面來了解具體內(nèi)容
    2021-11-11
  • Python實現(xiàn)統(tǒng)計mp4/avi視頻的時長

    Python實現(xiàn)統(tǒng)計mp4/avi視頻的時長

    moviepy是一個用于處理視頻和音頻的Python庫,它提供了一組功能豐富的工具,所以本文將利用它實現(xiàn)統(tǒng)計mp4/avi視頻的時長,希望對大家有所幫助
    2023-07-07
  • Python Mysql自動備份腳本

    Python Mysql自動備份腳本

    測試系統(tǒng)環(huán)境 Windows 2003 python 2.5.1 mysql 5.0.1 應(yīng)該只適用于Win,因為調(diào)用了CMD。 增量備份,因為自用,數(shù)據(jù)庫不大。
    2008-07-07
  • ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例

    ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例

    這篇文章主要介紹了ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論