5

自動システム テスト用の「テスト フレームワーク」を評価しています。これまでのところ、Python フレームワークを探しています。py.testまたはnoseでは、Googleテストフレームワークで知っているEXPECTマクロのようなものは見られません。最初の失敗でテストを中止せずに、1 つのテストで複数のアサーションを作成したいと考えています。これらのフレームワークで何か不足していますか、それとも機能しませんか? 自動化されたシステム テストに使用できる Python テスト フレームワークに関する提案はありますか?

4

5 に答える 5

2

鼻を使って行っている機能テストに似たものが欲しかったのです。私は最終的にこれを思いついた:

def raw_print(str, *args):
    out_str = str % args
    sys.stdout.write(out_str)

class DeferredAsserter(object):
    def __init__(self):
        self.broken = False
    def assert_equal(self, expected, actual):
        outstr = '%s == %s...' % (expected, actual)
        raw_print(outstr)
        try:
            assert expected == actual
        except AssertionError:
            raw_print('FAILED\n\n')
            self.broken = True
        except Exception, e:
            raw_print('ERROR\n')
            traceback.print_exc()
            self.broken = True
        else:
            raw_print('PASSED\n\n')

    def invoke(self):
        assert not self.broken

つまり、テストが成功したか失敗したかを示す文字列を出力しています。テストの最後に、実際に実際のアサーションを行う invoke メソッドを呼び出します。これは絶対に好ましいことではありませんが、この種のテストを処理できる Python テスト フレームワークは見たことがありません。また、この種のことを行うためのノーズ プラグインの作成方法を理解することもできませんでした。:-/

于 2009-08-20T17:25:31.587 に答える
1

提案を求められたので、ロボット フレームワークを提案します 。

于 2009-08-20T17:28:36.603 に答える
-1

-xコマンドラインでオプションを渡した場合、nose は最初の失敗でのみ中断します。

test.py:

def test1():
    assert False

def test2():
    assert False

-x オプションなし:

C:\temp\py>C:\Python26\Scripts\nosetests.exe test.py
FF
================================================== ====================
不合格: test.test1
-------------------------------------------------- --------------------
トレースバック (最新の呼び出しが最後):
  ファイル「C:\Python26\lib\site-packages\nose-0.11.1-py2.6.egg\nose\case.py」、行
183、runTestで
    self.test(*self.arg)
  test1 のファイル「C:\temp\py\test.py」、2 行目
    偽を主張する
アサーション エラー

================================================== ====================
不合格: test.test2
-------------------------------------------------- --------------------
トレースバック (最新の呼び出しが最後):
  ファイル「C:\Python26\lib\site-packages\nose-0.11.1-py2.6.egg\nose\case.py」、行
183、runTestで
    self.test(*self.arg)
  test2 のファイル「C:\temp\py\test.py」の 5 行目
    偽を主張する
アサーション エラー

-------------------------------------------------- --------------------
0.031 秒で 2 つのテストを実行

失敗 (失敗 = 2)

-x オプションを使用:

C:\temp\py>C:\Python26\Scripts\nosetests.exe test.py -x
ふ
================================================== ====================
不合格: test.test1
-------------------------------------------------- --------------------
トレースバック (最新の呼び出しが最後):
  ファイル「C:\Python26\lib\site-packages\nose-0.11.1-py2.6.egg\nose\case.py」、行
183、runTestで
    self.test(*self.arg)
  test1 のファイル「C:\temp\py\test.py」、2 行目
    偽を主張する
アサーション エラー

-------------------------------------------------- --------------------
0.047 秒で 1 つのテストを実行

FAILED (失敗 = 1)

鼻のドキュメントを確認することを検討してください。

于 2009-08-20T16:41:49.753 に答える