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でパラメータテストする方法をメモしました。
ちょっとしたものでしたが、どなたかの参考になれば幸いです。
[関連記事]