generated at
nimoy-framework
ASTに介入してUnitTestコードを分かりやすく書けるフレームワーク


> The Spock Framework has set a new standard as to what testing frameworks should be like - beautiful, expressive, pragmatic and fun.
shimizukawa訳: Spock Frameworkテスティングフレームワークの新標準になりつつある。美しく、表現的で、実用的で、楽しい。

Nimoy は Spock のPython版(shimizukawa STARTREKSpockの俳優はNimoy

python
from nimoy.specification import Specification class MySpec(Specification): def my_feature_method(self): with given: a = value_of_a b = value_of_b with expect: (a * b) == expected_value with where: value_of_a | value_of_b | expected_value 1 | 10 | 10 2 | 20 | 40

なるほど、pytestのparametrizeで書くとこうか
test.py
class SomeTest: @pytest.mark.parametrize( "value_of_a,value_of_b,expected_value", [ (1, 10, 10), (2, 20, 40), ] ) def test_my_feature(self, value_of_a, value_of_b, expected_value): # Arrange a = value_of_a b = value_of_b # Act & Assert assert (a * b) == expected_value

3A Patternに対応付けると以下の様な感じか
3a
3A Patternpytestnimoy
Arrange (準備)テスト関数内given
Act(実行) テスト関数内expect
Assert (判定)テスト関数内expect
パラメータparametrizewhere

んー、もしかしたらActはgivenでやってもいいのかな

examplesを見ると setup , when , then というのもある...なるほど?

setup , expect で使ってる例もあるな。。
結局 setup , when , then , given , expect , where の使い方の定義はないのかな?
このへんがドキュメントに書いてないので使おうという気になれない
派生元の Spock Frameworkのドキュメントを読めばわかるか・・