我到底不使用解决了这个
Mock为
Qt对象。在我的应用程序中,有一个
qt.py包装文件,用于处理
PyQt4和之间的差异,
PyQt5并允许它们随后被导入使用(而忽略
Qt名称空间的重新排列)。
在此文件中,我将实际的导入代码包装在ReadTheDocs的测试中,然后如果检测到,则返回一系列直接从继承的伪类
object。如果对象具有属性,则需要添加内容,但这仅在代码库中使用一次。它需要保持最新,但是可以解决问题。
# ReadTheDocsON_RTD = os.environ.get('READTHEDOCS', None) == 'True'if not ON_RTD: #... do the normal import here ...else: class QMockObject(object): def __init__(self, *args, **kwargs): super(QMockObject, self).__init__() def __call__(self, *args, **kwargs): return None class QApplication(QMockObject): pass class pyqtSignal(QMockObject): pass class pyqtSlot(QMockObject): pass class QObject(QMockObject): pass class QAbstractItemModel(QMockObject): pass class QModelIndex(QMockObject): pass class QTabWidget(QMockObject): pass class QWebPage(QMockObject): pass class QTableView(QMockObject): pass class QWebView(QMockObject): pass class QAbstractTableModel(QMockObject): pass class Qt(QMockObject): DisplayRole = None class QWidget(QMockObject): pass class QPushButton(QMockObject): pass class QDoubleSpinBox(QMockObject): pass class QListWidget(QMockObject): pass class QDialog(QMockObject): pass class QSize(QMockObject): pass class QTableWidget(QMockObject): pass class QMainWindow(QMockObject): pass class QTreeWidget(QMockObject): pass class QAbstractItemDelegate(QMockObject): pass class QColor(QMockObject): pass class QGraphicsItemGroup(QMockObject): pass class QGraphicsItem(QMockObject): pass class QGraphicsPathItem(QMockObject): pass class QGraphicsTextItem(QMockObject): pass class QGraphicsRectItem(QMockObject): pass class QGraphicsScene(QMockObject): pass class QGraphicsView(QMockObject): pass app = None


