Unittesting Corba в Python - PullRequest
       14

Unittesting Corba в Python

2 голосов
/ 02 ноября 2009

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

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

Спасибо!

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 02 ноября 2009

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

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

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

1 голос
/ 02 ноября 2009

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

0 голосов
/ 20 июля 2018

У меня похожая работа, но я, вероятно, не напишу тест для реализации объектов CORBA или, более конкретно, объектов COM (реализация CORBA). Я должен написать тесты для работы, которая использует эти структуры в противоположность самим структурам (хотя я мог бы также оказаться в этой роли, если бы задал слишком много вопросов). В конце концов, unittest - это интеграция в меньшем масштабе, поэтому всякий раз, когда я пишу тесты, я всегда думаю о входных и выходных данных, а не о реальных структурах. Исходя из того, как вы написали свою проблему, я сконцентрируюсь на данных server_pagetable.getData () и выходном HTML, не слишком заботясь о том, что происходит между ними (потому что это код, который вы тестируете, вы не хотите определять код в тесте, но убедитесь, что вывод правильный). Если вы хотите протестировать отдельные функции между ними, я бы получил фиктивные данные (по сути, все еще данные, так что вы можете генерировать фиктивные данные, а не фиктивный класс, если это возможно). Моды используются только тогда, когда у вас нет частей полного кода, и эти функции нуждаются в некотором входе из этих частей кода, но, поскольку они вам не интересны или не имеют их, вы упрощаете взаимодействие с ними. Это всего лишь мое мнение.

...