Уведомления

Группа в Telegram: @pythonsu

#1 Май 16, 2012 11:58:08

grok
От:
Зарегистрирован: 2010-09-09
Сообщения: 74
Репутация: +  0  -
Профиль   Отправить e-mail  

Несоответствие вывода метода класса.

Доброго времени суток!
Есть некий метод на вход которому подается XML описывающий запрос к БД. На выходе он формирует XML-результат ответа. При его тестировании при помощи unittest и стандартное его использование в исполняющемся файле наблюдается их несоответствие. (в юните данный метод отрабатывает не корректно).
С чем это может быть связано?
P.S. В данном методе сплошь и рядом встречаются рекурсивные методы.
Результат юнита (вывод неверен, т.к. не хватает еще одного внутреннего <object_list>):

<?xml version='1.0' encoding='UTF-8'?>
<object_list count="2">
  <object name="commission_compl_tab" primary_key="47">
    <field name="operator_id">5</field>
    <field name="date_time_mod">2012-03-27 17:26:43.421000+07:00</field>
  </object>
  <object name="commission_compl_tab" primary_key="61">
    <field name="operator_id">7</field>
    <field name="date_time_mod">2012-04-19 16:53:41.790000+07:00</field>
  </object>
</object_list>

Результат отработки исполняемого файла (вывод соответствует действительности):
<?xml version='1.0' encoding='UTF-8'?>
<object_list count="2">
  <object name="commission_compl_tab" primary_key="47">
    <field name="operator_id">5</field>
    <field name="date_time_mod">2012-03-27 17:26:43.421000+07:00</field>
    <object_list count="3">
      <object name="complaints_tab" primary_key="526">
        <field name="commission_id">47</field>
        <field name="ot">Алексеевна</field>
      </object>
      <object name="complaints_tab" primary_key="527">
        <field name="commission_id">47</field>
        <field name="ot">Ивановна</field>
      </object>
      <object name="complaints_tab" primary_key="528">
        <field name="commission_id">47</field>
        <field name="ot">Александровна</field>
      </object>
    </object_list>
  </object>
  <object name="commission_compl_tab" primary_key="61">
    <field name="operator_id">7</field>
    <field name="date_time_mod">2012-04-19 16:53:41.790000+07:00</field>
  </object>
</object_list>
P.P.S. ОС Linux Ubuntu 11.04, Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)



Отредактировано grok (Май 16, 2012 12:09:03)

Офлайн

#2 Май 16, 2012 12:59:52

dehun
От: Ukraine::Kiev
Зарегистрирован: 2012-04-25
Сообщения: 26
Репутация: +  3  -
Профиль   Отправить e-mail  

Несоответствие вывода метода класса.

может быть логирование в функциях формирования ответа помогут решить проблему? есть там какойнить вербос?

вариантов вобше немного - вызовы из юнит теста и из реального кода отличаются или отличается окружение.
проверьте идентичность вызовов. попробуйте из шела повторить цепочку вызовов. проверте порядок импортов - может быть он имеет значение.
проверте окружение - есть ли манки патчинг какой? база данных одна и тажа используется для теста и программы?

Офлайн

#3 Май 16, 2012 13:19:09

grok
От:
Зарегистрирован: 2010-09-09
Сообщения: 74
Репутация: +  0  -
Профиль   Отправить e-mail  

Несоответствие вывода метода класса.

dehun
может быть логирование в функциях формирования ответа помогут решить проблему? есть
проверьте идентичность вызовов. попробуйте из шела повторить цепочку вызовов. проверте порядок импортов - может быть он имеет значение.
Вот, вот.. уже проверил.. Оказывается в исполняемом файле аналогичная ситуация была бы, если бы я второй раз этот метод вызвал не “удаляя” экземпляр данного класса. В общем поведение экземпляра меняется в ходе метода и, соответственно, при повторном вызове данного метода он отрабатывает некорректно.



Отредактировано grok (Май 16, 2012 13:19:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version