0

クラスに属性を設定する方法は知っていますが、ファイルに設定する方法が見つかりません..

flow = ['1','4','5','2']

def test_generator(test):
    def test_parser(self):
        print test
    return test_parser

class API_tests(unittest.TestCase):
        pass


for test in flow:
    test_name = 'test_%s' % test
    test = test_generator(test)
    setattr(API_tests, test_name, test)

これは、動作します。

setattr() の API_tests をクラスではなくオブジェクトとしてのファイルに置き換えて、このファイルに関数 (test_generator X 4) が追加されるようにします。それらを動的に設定します。

コマンドラインで「nosetests -v」を実行すると、「4 つのテストに合格しました」と表示されると予想される結果です。

この質問は他の作品にある可能性があります:現在のファイルをオブジェクトとして取得する方法

ありがとう

4

1 に答える 1

0

モジュールの名前空間でテスト関数を動的に作成するのではなく (私が思うに)、テスト ジェネレーターの NOSETEST サポートを使用します。

もしノーズがジェネレーターを検出し、そのジェネレーターが呼び出し可能オブジェクトと呼び出し可能オブジェクトが必要とする引数を生成する場合、それを反復して各テストを実行します。

あなたの例は次のように書き直すことができます

def check_flow_value(val):
    # assert something about val
    assert True

def test_flows():
    flow = ['1','4','5','2']
    for val in flow:
        yield check_flow_value, val

これを考えると、nose は 4 つのテストを実行します。

于 2012-10-21T10:22:15.417 に答える