2009-11-02 3 views
2

Меня интересует ваше мнение о коде Unittesting, который использует Corba для связи с сервером.Unittesting Corba in Python

Вы бы издевались над объектами Корбы? В Python это какая-то боль в заднице, потому что все методы объектов Corba загружаются динамически. Таким образом, вы в основном застреваете с «макетом».

Спасибо!

Примечание: Я считаю, что я не сделал себе достаточно ясно, так что я постараюсь дать несколько более конкретный пример:

Веб-приложение должно отобразить страницу, содержащую данные, полученные с сервера. Он получает данные, вызывая server_pagetable.getData(), а затем форматирует данные, преобразует их в правильные типы python (потому что Corba не имеет типа даты и т. Д.) И, наконец, создает HTML-код для отображения.

И это то, что я хотел бы протестировать - методы, которые получают данные и выполняют все преобразования и, наконец, создают HTML-код.

Я считаю, что наиболее простым решением является издевательствовать объекты Corba, поскольку они по существу содержат как сетевые, так и функциональные возможности db (которые не должны тестироваться в модульных тестах).

Просто для этого достаточно «лишней работы» - издевательства над всеми объектами Corba (есть объект User, объект сеанса сервера, связанный с ним объект, объект admin и т. Д.). Может быть, это просто потому, что я застрял с Корбой, и поэтому мне нужно отразить иерархию объектов, продиктованную сервером с помощью mocks. С другой стороны, может случиться так, что есть довольно классное элегантное решение для тестирования кода с помощью Corba, который просто не переходил мне на ум.

ответ

3

Не пытайтесь униформировать Корба. Предположим, что Корба работает. Unittest ваш собственный код. Это означает, что:

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

  2. После этого проверьте правильность работы всех открытых объектов. Для этого вам не нужен Корба.

+0

Да, но время от времени (в моем случае на самом деле довольно часто) вам просто нужно проверить некоторые функции, которые напрямую используют Corba. В моем случае сервер связывается с клиентом с помощью Corba, поэтому, если я хочу проверить это, например, мой объект, который обертывает интерфейс Corba, отлично работает, я должен каким-то образом включить Corba в тест. (Отказ от ответственности: Это не мой дизайн, только что я унаследовал и должен работать. :-)) –

+0

Измените дизайн в этом отношении. Также не проверяйте компилятор Corba (если вы не сталкиваетесь с ошибками и не должны знать, как это работает). Убедитесь, что ваш код задает правильные параметры. Следующим шагом будет получение источника для сервера и проверка его кода с помощью модульных тестов. Но избегайте круглых поездок (как можно больше). Отказ от ответственности: Реальность бьет бумагу. –

1

Я бы установил тестовый сервер и проведу тесты на это. Unittesting может быть сложным с сетевым материалом, поэтому лучше всего держать его как можно более реальным. Любое издевательство было бы сделано на тестовом сервере, например, если вам нужно общаться с тремя разными серверами, его можно настроить с тремя разными IP-адресами, чтобы играть роль всех трех серверов.

Смежные вопросы