Godot EngineのGUTプラグインを使って、パラメータテスト/parameterized testを書く方法を整理します。
はじめに
以前、Godot Engineでテストを書く方法をまとめました: www.bioerrorlog.work
今回はそれに加えて、パラメータテストを書く方法をメモします。
Godot Engineでパラメータテストを書く
テスト関数の引数に、params=use_parameters(<List>)の形でListを渡せば、そのListの要素の数だけ繰り返しテストが実行されます。
例:
# テスト対象 class Foo: func add(p1, p2): return p1 + p2
# テストコード extends GutTest var foo_params = [[1, 2, 3], ['a', 'b', 'c']] func test_foo(params=use_parameters(foo_params)): var foo = Foo.new() var result = foo.add(params[0], params[1]) assert_eq(result, params[2])
Ref. Parameterized Tests · bitwes/Gut Wiki · GitHub
1回目のテストではparamsに[1, 2, 3]が、2回目のテストではparamsに['a', 'b', 'c']が割り当てられ、パラメータとして利用できます。
例えば1回目のテストでは、
- params[0]: 1
- params[1]: 2
- params[2]: 3
として各値が渡されてます。
ちなみにparams[1]のようにindexで値にアクセスするのがわかりにくければ、dictで渡しても問題ありません。
var extract_words_from_text_params = [
{"input": "abc def g", "expected": ["abc", "def", "g"]},
{"input": "abc, def g?", "expected": ["abc", "def", "g"]},
]
func test_extract_words_from_text(params=use_parameters(extract_words_from_text_params)):
var input = params["input"]
var expected = params["expected"]
var result = _obj.extract_words_from_text(input)
assert_eq(result, expected)
こうした場合、indexアクセスではなくparams["input"]のように意味を持つkeyでアクセスさせることができます。
おわりに
以上、Godot Engineでパラメータテストする方法をメモしました。
ちょっとしたものでしたが、どなたかの参考になれば幸いです。
[関連記事]