🍣
yield 関数を呼び出す (`yield from`)
yield 関数を呼び出す
yeild で値を返す関数を複数呼び出して一つの yield 関数にしたい場合、
yield 関数()
としても期待通り動作しない。
このような場合 yield from
を使う
具体例
で parameterized テストの値を関数で返すテストを作ったが、複数の関数の結果を合わせて一つのテストパラメータとしたいことがある。こういう場合、子関数を yield from
で呼ぶことにより、複数の関数の結果をまとめてテストすることができ。
import pytest
def dynamic_params_dayofweek():
for i in range(3):
for j in ["Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat"]:
yield pytest.param(i, j, id=f"{i}-{j}-dayofweek")
def dynamic_params_month():
for i in range(3):
for j in ["Jar", "Feb", "Mar"]:
yield pytest.param(i, j, id=f"{i}-{j}-Month")
def dynamic_params_all():
'''
yield from がポイント
'''
yield from dynamic_params_dayofweek()
yield from dynamic_params_month()
@pytest.mark.parametrize("i, j, ", dynamic_params_all())
def test_dynamic_params_all(i, j):
print(i, j)
Discussion