私はpytestを使ってテストしたいコマンドラインインターフェイスを持つアプリケーションを開発しています。私の考えは、pytestでは、継承されたテストメソッドが適切なアサーション出力を与えないのはなぜですか?
class TestEchoCmd(Scenario):
commands = [
"echo foo"
]
stdout = "foo\n"
のようなテストクラスを定義し、実際のテストを行うためにテストメソッドを持つクラスを使用することでした。
class Scenario:
commands = []
stdout = ""
def test_scenario(self, capsys):
for cmd in self.commands:
ret = my_app.execute_command(shlex.split(cmd))
assert ret == 0
stdout, stderr = capsys.readouterr()
assert stdout == self.stdout
:他の言葉では、試験方法を定義するのではなく - - 常に同じである(非常に退屈であろう)シナリオを説明すべてのクラスでは、これらのクラスは、Scenario
クラスからテストメソッドを継承しますテストが合格している限り、これは正常に動作します。テストが失敗した場合、pytestはテストメソッドが継承されていない場合とは異なり、追加情報なしでAssertionError
を出力し、assert
ed式を詳細に記述します。アサーションが失敗した理由を正確に伝えることは不可能であるため、これは非生産的です。
これを行う方法はありますか?私は本当にシナリオの記述を可能な限り簡潔にしたいと思っています。 (私は約@pytest.mark.parametrize
を知っているが、私はそれが、この場合には非常に読みやすいコードになりないと思います。)
(のDebian GNU/Linuxが提供されるああ、ちなみに、これはpytest 3.0.2である。)