pytestのfixtureに引数を渡して使いたいです。
pytestのfixtureで引数を渡すには
少しややこしい書き方をする必要がある。
✔️ 本記事のテーマ
pytest.fixtureで引数を定義する方法
✔️ 読者さんへの前置きメッセージ
本記事は「pytestライブラリのfixture」について書いています。
この記事を読むことで
「pytest.fixtureの使い方 や pytest.fixtureで引数を定義する方法」
について理解できます。
pytest.fixtureを使うことでtestモジュール内で使うモックを作成することができます。
本記事では、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を使います。
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についてもっとスキルをつけるなら
テスト用のPythonライブラリ、pytestの使い方について解説しました。
pytestを使うことで効率的なテストを行うことができます。
pytestについてより詳しく理解するなら以下の書籍がオススメです。
この記事で解説した内容もこの書籍に含まれています。また、pytestだけではなく、テスト駆動開発の基本的な考え方についても習得することができます。
エンジニアとしての自身の価値をチェックする(完全無料)
エンジニアとして、
自分の価値がどれくらいのものかご存知でしょうか?
エンジニアとしてIT業界に身を置いていると
今の会社でずっと働くのか、フリーランスとして独立するのか …
と様々な選択肢があります。
どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも
自身の価値を知っておくことはとても重要です。
TechClips ME では、
職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。
▼▼▼▼▼
▲▲▲▲▲
しかもTechClips MEでは想定年収を企業から提示してくれるので、
自身の価値を数字で分かりやすくたしかめることができます。
登録はもちろん完全無料なので、一度登録してみると良いかもしれません。
コメント