Тесты не пройдены, пока обновленное приспособление pytest-qt v3.1.0 qtmodeltester.check явно тестирует string_types для DisplayRole - PullRequest
0 голосов
/ 26 сентября 2018

pytest-qt v3.1.0 явно тестирует string_types для DisplayRole данных.Что не так для старых версий.Он сломал наши тесты, потому что мы возвращаем объект (int, str и т. Д.) Для DispalyRole данных, которые мы считаем разумными (не так ли?).

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

Технологии: Python 2.7.x x64 и Pyside v1.2.4 ОС: Windows 7 машина

def _test_data(self):
    """Test model's implementation of data()"""
    if not self._has_children():
        return

    # A valid index should have a valid QVariant data
    assert self._model.index(0, 0).isValid()

    string_types = [str]
    if sys.version_info.major == 2:
        string_types.append(unicode)  # noqa
    if qt_api.QString is not None:
        string_types.append(qt_api.QString)

    string_types = tuple(string_types)

    types = [
        (qt_api.QtCore.Qt.DisplayRole, string_types),
        (qt_api.QtCore.Qt.ToolTipRole, string_types),
        (qt_api.QtCore.Qt.StatusTipRole, string_types),
        (qt_api.QtCore.Qt.WhatsThisRole, string_types),
        (qt_api.QtCore.Qt.SizeHintRole, qt_api.QtCore.QSize),
        (qt_api.QtCore.Qt.FontRole, qt_api.QtGui.QFont),
        (
            qt_api.QtCore.Qt.BackgroundColorRole,
            (qt_api.QtGui.QColor, qt_api.QtGui.QBrush),
        ),
        (
            qt_api.QtCore.Qt.TextColorRole,
            (qt_api.QtGui.QColor, qt_api.QtGui.QBrush),
        ),
        (
            qt_api.QtCore.Qt.DecorationRole,
            (
                qt_api.QtGui.QPixmap,
                qt_api.QtGui.QImage,
                qt_api.QtGui.QIcon,
                qt_api.QtGui.QColor,
                qt_api.QtGui.QBrush,
            ),
        ),
    ]

    # General purpose roles with a fixed expected type
    for role, typ in types:
        data = self._model.data(self._model.index(0, 0), role)
        if data is not None:
            data = qt_api.extract_from_variant(data)

      assert data == None or isinstance(data, typ), role  # noqa
      AssertionError: PySide.QtCore.Qt.ItemDataRole.DisplayRole
      assert (1 == None or False)
      where False = isinstance(1, (<type 'str'>, <type 'unicode'>))

.tox\py27\lib\site-packages\pytestqt\modeltest.py:499: AssertionError

1 Ответ

0 голосов
/ 27 сентября 2018

Вот предложение от одного из pytest-qt сопровождающих:

Тестер моделей основан на тестере моделей Qt (и был обновлен до его последней версии с v1.3.0).То, что выполняет ту же проверку , а в документации Qt также говорится (выделено мной):

Пользовательские модели должны возвращать данные в этих типах.

и

Qt :: DisplayRole: Ключевые данные, которые будут отображаться в виде текста.(QString)

Если вы используете эти данные для пользовательских целей (а не для их отображения), вам, вероятно, следует использовать Qt :: UserRole.

IMHO, это ясно из тестера Qt идокументация, что это не разрешено.

...