Вопрос

I have created following nose test:

@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 is a function of tested object:

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

So I've got a test generator that produces 2 tests using _test_validate_helper_eq function. Also _test_validate_helper_eq function takes various number of parameters and passes it to validatePrice

First test PASS, but there is a problem with second one. As you can see I am passing there additional 2 parameters, name and default_price. This test fails with following error: AssertionError: {'price': u'-1'} != set(['price', -1])

It turns out that value of expected parameter is a set instead of dictionary I have defined. I don't know if this convertion is made by nose or becaue *args and **kwargs are used.

Any ideas what is going on and how to fix it?

Это было полезно?

Решение

Typo in:

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

here {'price', -1} creates a set, you want a dict and probably meant to type {'price': -1}

Другие советы

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

Do you mean a : here? {a, b, c} is a set literal.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top