关于unittest单元测试问题

想使用unittest对logic()函数进行测试,谢谢解答

import sys
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QPushButton, QLineEdit
from Caculator.caculator_ import Calculator, Fail


class Login(QWidget):
    def __init__(self):
        super(Login, self).__init__()
        self.person = "admin"
        self.secret = "123456"
        self.calculator = Calculator()
        self.fail = Fail()

        self.resize(600, 400)
        self.setWindowTitle("计算器登陆界面")

        self.user = QLabel(self)
        self.user.setText("用户名:")
        self.user.move(100, 150)

        self.password = QLabel(self)
        self.password.setText("密码:")
        self.password.move(100, 220)

        self.login = QPushButton(self)
        self.login.setText("登录")
        self.login.clicked.connect(self.handle)
        self.login.resize(70, 40)
        self.login.move(190, 260)

        self.exit = QPushButton(self)
        self.exit.setText("退出")
        self.exit.clicked.connect(self.quit)
        self.exit.resize(70, 40)
        self.exit.move(300, 260)

        self.username = QLineEdit(self)
        self.username.resize(300, 30)
        self.username.move(170, 145)

        self.pwd = QLineEdit(self)
        self.pwd.resize(300, 30)
        self.pwd.move(150, 215)

    def logic(self):
        if self.username.text() == self.person and self.pwd.text() == self.secret:
            return 200
        else:
            return 400

    def handle(self):
        if self.logic() == 200:
            self.calculator.show()

    def quit(self):
        if self.logic() == 400:
            sys.exit(app.exec_())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    user = Login()
    user.show()
    sys.exit(app.exec_())

想使用unittest,你需要先import unittest
然后login继承unittest.TestCase
然后logic改名字,前面要加上test
最后要执行unittest.main()
这样不仅麻烦,而且测试过程和你实际想要的过程并不一致
其实你可以换个思路,不要直接对logic进行测试
而是把你
if __name__ == "__main__":
里面的代码封装一下,加入测试