2011-02-09 2 views
0

Я пытаюсь реорганизовать наши тестовые библиотеки для автоматизации, и нос кажется действительно многообещающим. Мой вопрос: какая лучшая стратегия для передачи объектов Python в носовые тесты?Передача пользовательских объектов Python в nosetests

Наши тесты организованы в тестовом листе с кучей модулей, которые выполняют различные типы операций запроса. Что-то вроде этого:

testlib 
\-testmoda 
\-testmodb 
\-testmodc 

В некоторых случаях тестовые модули (т.е. testmoda) не что иное, как test_something(), test_something2() функции, а в некоторых случаях мы имеем класс TestModB в testmob с test_anotherthing1(), test_anotherthing2(). Приятно, что нос легко находит и то, и другое.

Большинство этих тестовых функций являются запросами фабричных материалов, которые могут легко обмениваться одним соединением с нашей фермой серверов. Таким образом, мы делаем много test_something1 (cnn), TestModB.test_anotherthing2 (cnn) и т. Д.

В настоящее время мы не используем нос, вместо этого у нас есть hodge-podge из самодельных сценариев драйверов с жестко закодированными списками тестов выполнить. Каждый из этих сценариев драйвера создает свой собственный объект подключения. Поддержание этих сценариев и мелочей связи является болезненным.

Я хотел бы воспользоваться бесплатным преимуществом открытия носа, передав объект связи по своему усмотрению.

Заранее благодарен!

Rob

P.S. Объекты соединения не расходуются. :(

ответ

0

Вы могли бы использовать завод создать соединения, то есть функции test_something1() (не принимая никаких аргументов) использовать завод, чтобы получить соединение?

не
+0

Это один из подходов, который я рассматривал, хотя каждый вызов фабрики в настоящее время создает новое уникальное соединение. В идеале я хотел бы построить один объект соединения, а затем передать его носу. – Rob

+0

Если вы хотите, чтобы фабрика возвращала общее (общее) соединение, это легко сделать. –

+0

@Matt - Удивительный. Используя структуру, которую я заметил в описании, что вы рекомендуете? В пределах пространства модуля достаточно легко сделать, но как я могу совместно использовать одно глобальное соединение со всеми модулями testlib при отключении nosetests.exe? Я все еще новичок в Python и пропустил что-то основное. – Rob

0

Насколько я могу судить, не существует простой способ .. просто передать пользовательские объекты в нос

Однако, как Мэтт отметил, есть некоторые жизнеспособные обходные пути для достижения аналогичных результатов

в принципе, это сделать:

  1. Настройка словаря данных в качестве уровня пакета глобального
  2. Добавить пользовательские объекты в этот словарь
  3. Создание некоторых заводских функций вернуть эти пользовательские объекты или создавать новые, если они присутствуют/подходящие
  4. Рефакторинг существующего testlib \ testmod * модули для использования на заводе
Смежные вопросы