2

私は次のノーズテストを作成しました:

@nottest
def _test_validate_helper_eq(self, input, expected, *args, **kwargs):
    result = testedObcject.validatePrice(input, *args, **kwargs)
    eq_(result, expected)


def test_validate_price(self):
    yield self._test_validate_helper_eq, {}, {'price':'0'}
    yield self._test_validate_helper_eq, {}, {'price', -1}, 'price', -1`

validatePrice は、テスト対象の関数です。

def validatePrice(self, input, name = 'price', default_price=0):
  ...
  return validated_input

関数を使用して 2 つのテストを生成するテスト ジェネレーターがあり_test_validate_helper_eqます。また_test_validate_helper_eq、関数はさまざまな数のパラメーターを取り、それをに渡しますvalidatePrice

最初のテストは PASS ですが、2 番目のテストには問題があります。ご覧のとおり、追加の 2 つのパラメーターnamedefault_price. このテストは次のエラーで失敗します:AssertionError: {'price': u'-1'} != set(['price', -1])

expectedパラメータの値は、set私が定義した辞書の代わりであることがわかりました。*argsこの変換が鼻で行われたのか、それとも使用されたために行われたのかはわかりません**kwargs

何が起こっているのか、それを修正する方法はありますか?

4

2 に答える 2

5

タイプミス:

yield self._test_validate_helper_eq, {}, {'price', -1}, 'price', -1`

ここ{'price', -1}でセットを作成します。辞書が必要で、おそらく入力することを意図しています{'price': -1}

于 2013-07-18T10:12:49.090 に答える
2
yield self._test_validate_helper_eq, {}, {'price', -1}, 'price', -1`
#                                                ^

ここのこと:ですか?{a, b, c}セットリテラルです。

于 2013-07-18T10:11:32.363 に答える