Pytest測試框架(四):pytest 參數化用例


Pytest測試框架(三):pytest fixture 用法 中介紹了pytest.fixture()可以參數化fixture函數,@pytest.mark.parametrize 可以為測試方法或者測試類定義多組變量。本文將分享使用@pytest.mark.parametrize 實現參數化用例。

使用方法

@pytest.mark.parametrize(argnames, argvalues)

  • argnames:參數化變量名,可以是string(逗號分割) 、list 和 tuple類型

    • @pytest.mark.parametrize("a, b", [(1,2),(3,4)])
    • @pytest.mark.parametrize(["a","b"], [(1,2),(3, 4)])
    • @pytest.mark.parametrize(("a", "b"), [(1,2),(3,4)])
  • argvalues:參數化的值

參數化實例1

import pytest

class Test_Demo():
    @pytest.mark.parametrize("a, b, result", [(1, 1, 2), (2, 8, 10)])
    def test_case1(self, a, b, result):
        print("\n開始執行測試用例1")
        assert a + b == result

結果:

PASSED                 [ 50%]
開始執行測試用例1
PASSED                [100%]
開始執行測試用例1

參數化實例2

import pytest
data = [(1, 1, 2),
         (2, 8, 10),
         (99, 1, 100)
         ]

class Test_Demo():
    @pytest.mark.parametrize("a, b, result", data)
    def test_case1(self, a, b, result):
        print("\n開始執行測試用例1")
        assert a + b == result


if __name__ == '__main__':
    pytest.main()

結果:

PASSED                [ 33%]
開始執行測試用例1
PASSED               [ 66%]
開始執行測試用例1
PASSED             [100%]
開始執行測試用例1

參數化實例3

data.yaml文件內容:

-
  - 1
  - 1
  - 2
-
  - 2
  - 8
  - 10
-
  - 99
  - 1
  - 100
import pytest
import yaml

class Test_Demo():
    @pytest.mark.parametrize(["a","b","result"],yaml.safe_load(open("./data.yaml")))
    def test_case1(self, a, b, result):
        print("\n開始執行測試用例1")
        assert a + b == result
        

結果:

PASSED                [ 33%]
開始執行測試用例1
PASSED               [ 66%]
開始執行測試用例1
PASSED             [100%]
開始執行測試用例1

數據驅動

數據驅動參數化的應用,數據量小的測試用例可以使用代碼的參數化來實現數據驅動,數據量大的情況下可以使用一種結構化的文件(例如csv、yaml、xml、db、 excel、json等)來存儲數據,然后在測試用例中讀取這些數據。

--THE END--

文章標題:Pytest測試框架(四):pytest 參數化用例
本文作者:hiyo
本文鏈接:https://www.cnblogs.com/hiyong/p/14163287.html
歡迎關注公眾號:「測試開發小記」及時接收最新技術文章!


免責聲明!

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



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