doc.dev1x.org

Repeatable (繰り返し可能)

1. 原則

テストは冪等性を有していなければならない

2. 根拠

デバッグが困難になる

3. 指針

状態やタイミングに依存するコードを書かない

import datetime

def fn1():
    dt = datetime.datetime(year=2015, month=1, day=1, hour=0)
    current = datetime.datetime.now()
    if current.hour == dt.hour:
        return "0時!"
from xxx import fn1

def test_fn1():
    assert fn1() == "0時!"
import datetime

def fn1(current):
    dt = datetime.datetime(year=2015, month=1, day=1, hour=0)
    if current.hour == dt.hour:
        return "0時!"
from xxx import fn1

def test_fn1():
    dt = datetime.datetime(year=2016, month=1, day=1, hour=0)
    assert fn1(dt) == "0時!"

4. 注意事項

参考資料