pytest.fixtureで引数を定義する

pytest.fixtureで引数を定義するPython
ゆうすけ
ゆうすけ

pytestのfixtureに引数を渡して使いたいです。

資格マフィア
資格マフィア

pytestのfixtureで引数を渡すには
少しややこしい書き方をする必要がある。

 

✔️ 本記事のテーマ

pytest.fixtureで引数を定義する方法

 

✔️ 読者さんへの前置きメッセージ

本記事は「pytestライブラリのfixture」について書いています。

 

この記事を読むことで
「pytest.fixtureの使い方 や pytest.fixtureで引数を定義する方法」
について理解できます。

 

pytest.fixtureを使うことでtestモジュール内で使うモックを作成することができます。

 

本記事では、pytest.fixtureに引数を渡す方法を解説していきます。

 

それでは、解説していきましょう。

 

pytest.fixtureを渡す方法

pytest.fixtureを渡す方法

pytest.fixtureで引数を渡すには
pytest.fixtureの中で入れ子にreturnを書く必要があります。

@pytest.fixture
def my_fixture():

  def _method(a, b):
    return a*b

  return _method


def test_multi(my_fixture):
  result1 = my_fixture(2, 3)
  assert result1 == 6

  result2 = my_fixture(4, 5)
  assert result2 == 20

 

上記のコードは、
pytest.fixtureの中で第1引数と第2引数をかけてその値を返しています。

 

コードではpytest.fixtureの中に関数を定義しています。
この関数の中で引数を使って処理を記述します。

def _method(a, b):
    return a*b

 

そして、pytest.fixtureの返り値としてその関数を呼び出しています。

@pytest.fixture
def my_fixture():

    ...

  return _method

 

こうすることで、
pytest.fixtureで引数を受け取って処理を書くことができます。

 

pytest.fixtureとは?

pytest.fixtureとは?

pytest.fixtureとはテストのモック作成用の機能です。

 

pytestでは、テストケースの前処理をfixtureとして切り出すことができます。

 

例えば、以下のようにしてpytest.fixtureを使います。

import pytest


def sum_2_value(a, b):
    return a + b


@pytest.fixture
def number():
    a = 1
    b = 2
    yield {'anb': [a, b]}


def test_sum(number):
    a, b = number['anb']
    c = sum_2_value(a, b)

    assert c == 3

 

上記のコードは2つの値を合計するsum_2_value()のテストを行なっています。

 

fixtureとして定義したnumber()では、変数a, 変数bを作っています。

 

そして、テスト関数のtest_sum()の中で
fixtureを呼ぶことで変数a, 変数bをテストで使えるようにしています。

 

fixtureではテストの前処理だけ定義します。
そして、テスト関数でfixtureを呼び出すことでその前処理の定義を使うことができます。

 

このように、pytest.fixtureを使うことでテストの前処理を切り出すことができます。

 

なお、pytest.fixtureについては
pytestの使い方【fixture, 実行方法など】」の記事で詳しく解説しています。

 

pytestやPythonについてもっとスキルをつけるなら

pytestやPythonについてもっとスキルをつけるなら

テスト用のPythonライブラリ、pytestの使い方について解説しました。

 

pytestを使うことで効率的なテストを行うことができます。

 

pytestについてより詳しく理解するなら以下の書籍がオススメです。

 

この記事で解説した内容もこの書籍に含まれています。また、pytestだけではなく、テスト駆動開発の基本的な考え方についても習得することができます。

 

また、Pythonについて基礎から学ぶのであれば、オンラインスクールがオススメです。


オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしているので、これからPythonを学ぶ人にもオススメです。


オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。


オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。

✔️オススメのプログラミングスクール ベスト3

プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。


気になった方はぜひチェックしてみて下さい〜!

コメント

タイトルとURLをコピーしました