为PySide2应用程序编写单元测试

时间:2019-10-17 12:39:41

标签: python python-3.x unit-testing pyside2

我正在为我的PySide2应用程序编写单元测试。 对于这些测试,我调用了多种方法,其中一些正在使用QWidget对象。

我收到以下错误:

  

QWidget:必须在QWidget之前构造一个QApplication

我的研究并没有真正成功,在我看来,关于这一点的文档并不多。我发现的是pytestqt,但没有有关如何使用它的文档。 是否有一种简单的方法来运行测试?

import sys

sys.path.append('..')
from pdf_converter.logic.logic import Logic
from pyside2uic.properties import QtGui
import unittest


class PageObjectTest(unittest.TestCase):


   def setUp(self):
        self.logic = Logic()
        self.page_objects = self.logic.pdf_to_push_button("../tests/test2.pdf")
        self.page_object = self.page_objects[0]
        self.img = self.page_object.img
        self.rotation = self.page_object.rotation
        self.page = self.page_object.pdf_page

    def test_image_is_QImage(self):
        self.assertIsInstance(type(QtGui.QImage), type(self.img))

    def test_page_is_wand_sequence(self):
        self.assertIsInstance(type(self.page), type('wand.sequence.SingleImage'))

    def test_page_converts_to_image(self):
        self.assertIsInstance(type(self.page_object.pageToimage(self.page_object.pdf_page)), type(QtGui.QImage))

    def test_pdf_to_push_button_len(self):
        self.assertEqual(len(self.page_objects), 12)

if __name__ == '__main__':
    unittest.main()

编辑:如果有人遇到相同的问题,只需将app = QApplication(sys.argv)放在班级外面即可。

0 个答案:

没有答案