このリポジトリはRubyのRspecに似た記法でテストを書くことができるDSLと各言語に対してコンパイル(トランスパイル)するバックエンド。
pythonでspecを書く
target.py
def fizzbuzz(n):
if n % 5 == 0 and n % 3 == 0:
return "FizzBuzz"
if n % 3 == 0:
return "Fizz"
if n % 5 == 0:
return "Buzz"
return str(n)
fizzbuzz.spec
$import!
import target
$end
$describe "fizzbuzz"
subject!
target.fizzbuzz(n())
$end
$describe "when n == 1"
$it "return 1"
assert subject() == "1"
$end
$end
$describe "when n == 3"
$it "calling Fizz"
assert subject() == "Fizz"
$end
$end
$describe "when n == 5"
$it "calling Buzz"
assert subject() == "Buzz"
$end
$end
$describe "when n == 30"
$it "calling FizzBuzz"
assert subject() == "FizzBuzz"
$end
$end
$end
その後にasc.pyでコンパイル(トランスパイル)する。
python asc.py fizzbuzz.spec tests
./tests
にfizzbuzz.pyというファイルができる。
これをpytest
実行することでテストができる。
pytest tests