python里unittest使用discover方法来加载测试用例时,会打开一个多余的浏览器页面且无操作

求个大佬解答疑惑,自己查了好久也不知道哪里除了我问题
这个是我写的套件,用discover方法来加载测试用例

    suit = unittest.TestSuite()
    loader = unittest.TestLoader()
    suit.addTest(loader.discover(TestcasesPath,pattern='Unittest*.py'))

    runner = unittest.TextTestRunner()
    runner.run(suit)

然后可以成功根据代码找到我的Unittest_login.py文件,如下

import time
import unittest

from selenium import webdriver

from Modules.LoginAction import LoginAction


class Login_test(unittest.TestCase):

    # def setUp(self):
    #     '''
    #     准备好环境,执行测试用例的前置条件
    #     :return:
    #     '''
    #     print('--setup--')
    #     self.driver = webdriver.Chrome()
    #     self.driver.get('https://mail.163.com/')
    #     self.driver.maximize_window()
    #
    # def tearDown(self):
    #     print('--teardown--')
    #     time.sleep(2)
    #     self.driver.quit()


    driver = webdriver.Chrome()

    @classmethod
    def setUpClass(cls):
        print('--setup--')
        cls.driver.get('https://mail.163.com/')
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        print('--teardown--')
        time.sleep(2)
        cls.driver.quit()


    def test_01(self):
        loginAction = LoginAction()
        loginAction.do_login(self.driver, 'lsqtester001', 'qwer123')
        time.sleep(2)
        self.assertIn('lsqtester001',self.driver.page_source)

    @unittest.skip('jump')
    def test_02(self):
        self.assertEqual(1,2)

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

但是在执行测试用例的时候会先打开一个浏览器页面,然后无任何操作,如下

这个页面就一直在那边,打开之后就没有后续操作了,需要你手动关闭,然后过一会会另外打开一个浏览器开始跑正常的用例
正常的用例跑完了之后这个页面还是一直在那里必须要你手动关闭

阅读 1.7k
2 个回答
新手上路,请多包涵

请问最后是如何解决的?

新手上路,请多包涵

把测试类里的driver = webdriver.Chrome()放到setUpClass里就可以了,discover会初始化所有测试类,放外面就会被执行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进