nimoy-framework
ASTに介入してUnitTestコードを分かりやすく書けるフレームワーク
https://pypi.org/project/nimoy-framework/
https://github.com/browncoat-ninjas/nimoy
The Spock Framework has set a new standard as to what testing frameworks should be like - beautiful, expressive, pragmatic and fun.
shimizukawa.icon訳: Spock Framework がテスティングフレームワークの新標準になりつつある。美しく、表現的で、実用的で、楽しい。
Nimoy は Spock のPython版(shimizukawa.icon STARTREKのSpockの俳優はNimoy)
code: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で書くとこうか
code: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に対応付けると以下の様な感じか
table:3a
3A Pattern pytest nimoy
Arrange (準備) テスト関数内 given
Act(実行) テスト関数内 expect
Assert (判定) テスト関数内 expect
パラメータ parametrize where
んー、もしかしたらActはgivenでやってもいいのかな
examplesを見ると setup, when , then というのもある...なるほど?
https://browncoat-ninjas.github.io/nimoy/examples/
setup, expect で使ってる例もあるな。。
結局 setup, when, then, given, expect, where の使い方の定義はないのかな?
このへんがドキュメントに書いてないので使おうという気になれない
派生元の Spock Frameworkのドキュメントを読めばわかるか・・
https://spockframework.org/spock/docs/2.0/spock_primer.html#_blocks