Как получить dateFormat из jQuery UI datepicker?

Я мог бы воспроизвести ошибку с минимальным примером:

foo.py:

class MyError(Exception):
    pass

class A:
    def inner(self):
        err = MyError("FOO")
        print(type(err))
        raise err
    def outer(self):
        try:
            self.inner()
        except MyError as err:
            print ("catched ", err)
        return "OK"

Тест без насмешек:

class FooTest(unittest.TestCase):
    def test_inner(self):
        a = foo.A()
        self.assertRaises(foo.MyError, a.inner)
    def test_outer(self):
        a = foo.A()
        self.assertEquals("OK", a.outer())

Хорошо, все в порядке , оба теста пройдены

Проблема приходит с макетами. Как только класс MyError подвергается насмешке, предложение expect ничего не может поймать, и я получаю ту же ошибку, что и пример из вопроса:

class FooTest(unittest.TestCase):
    def test_inner(self):
        a = foo.A()
        self.assertRaises(foo.MyError, a.inner)
    def test_outer(self):
        with unittest.mock.patch('foo.MyError'):
            a = exc2.A()
            self.assertEquals("OK", a.outer())

Немедленно дает:

ERROR: test_outer (__main__.FooTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "...\foo.py", line 11, in outer
    self.inner()
  File "...\foo.py", line 8, in inner
    raise err
TypeError: exceptions must derive from BaseException

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#78>", line 8, in test_outer
  File "...\foo.py", line 12, in outer
    except MyError as err:
TypeError: catching classes that do not inherit from BaseException is not allowed

Здесь я получаю первый TypeError, которого у вас не было, потому что я поднимаю макет, когда вы вызвали истинное исключение с 'requests.exceptions.ConnectionError': requests.exceptions.ConnectionError в конфигурации. Но проблема остается в том, что предложение except пытается поймать насмешку .

TL / DR: когда вы макетируете полный пакет requests, предложение except requests.exceptions.ConnectionError пытается поймать макет. Поскольку макет на самом деле не BaseException, он вызывает ошибку.

Единственное решение, которое я могу себе представить, - не издеваться над полным requests, а только частями, которые не являются исключениями. Должен признать, что я не мог найти, как сказать, чтобы издеваться над издевались над всем, кроме этого , но в вашем примере вам нужно только исправить requests.head. Поэтому я думаю, что это должно работать:

def test_bad_connection(self):
    with mock.patch('path.to.my.package.requests.head',
                    side_effect=requests.exceptions.ConnectionError):
        self.assertEqual(
            mypackage.myMethod('some_address',
            mypackage.successfulConnection.FAILURE
        )

То есть: исправлять только метод head с исключением в качестве побочного эффекта.

7
задан bdukes 12 June 2009 в 17:48
поделиться

2 ответа

Использование этого метода работает для меня 1 . Есть ли несколько элементов с классом селектора? Вы знаете, что этот элемент уже был добавлен в качестве средства выбора даты?


1 На демонстрационном сайте средства выбора даты введите javascript:alert($("#datepicker").datepicker('option', 'dateFormat')); в адресную строку, и он выдаст вам " мм / дд / гг. "
9
ответ дан 7 December 2019 в 03:20
поделиться

Yes, it is a bug, and here's the bug report: http://dev.jqueryui.com/ticket/4301

UPDATE: the bug report indicates that this has already been fixed 3 years ago.

0
ответ дан 7 December 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: