课件和 Demo 地址
https://gitee.com/geektime-geekbang/Selenium
作者回复: 在使用 unittest.TestCase 编写测试用例时,可以通过将测试函数名作为参数传递给 `unittest.defaultTestLoader.loadTestsFromName()` 方法来获取指定的测试函数。而 `unittest.TestSuite()` 则可以将多个测试函数打包成一个测试套件。 因此,如果需要在一个脚本中执行多个测试函数,可以按照如下步骤进行: 1. 定义多个测试函数,并将每个测试函数都打包成一个测试套件; 2. 将所有测试套件添加到主测试套件中; 3. 使用 `unittest.TextTestRunner()` 执行主测试套件。 在你提供的代码中,`TestAddArticle` 类和 `TestAdminLogin` 类都继承自 `unittest.TestCase`,因此可以将它们分别打包成测试套件,并添加到主测试套件中。示例如下: ``` import unittest class TestAddArticle(unittest.TestCase): def test_add_article_ok(self): print("Test add article OK") class TestAdminLogin(unittest.TestCase): def test_login_ok(self): print("Test login OK") if __name__ == '__main__': # 将测试函数打包成测试套件 suite_article = unittest.TestLoader().loadTestsFromTestCase(TestAddArticle) suite_login = unittest.TestLoader().loadTestsFromTestCase(TestAdminLogin) # 创建主测试套件并添加测试套件 all_tests = unittest.TestSuite([suite_article, suite_login]) # 执行主测试套件 runner = unittest.TextTestRunner() runner.run(all_tests) ``` 在以上代码中,首先将 `TestAddArticle` 和 `TestAdminLogin` 类中的测试函数打包成测试套件,并将它们添加到主测试套件 `all_tests` 中。然后使用 `unittest.TextTestRunner()` 执行主测试套件即可。 至于 `__init__()` 方法中的 `method` 参数,通常情况下可以使用默认值 `None`,因为 `unittest.TestCase` 中已经定义了测试函数的执行方法。如果需要自定义测试函数的执行方法,可以通过重写 `runTest()` 方法来实现。例如: ``` class TestAddArticle(unittest.TestCase): def __init__(self, login): super().__init__() self.login = login def runTest(self): self.login() print("Test add article OK") class TestAdminLogin(unittest.TestCase): def __init__(self): super().__init__() def runTest(self): print("Test login OK") if __name__ == '__main__': login = TestAdminLogin() test_article = TestAddArticle(login) test_article.run() ``` 在以上代码中,`TestAddArticle` 类的 `__init__()` 方法接收一个 `login` 参数,并将其保存在实例属性中。然后重写了 `runTest()` 方法,先执行登录操作,然后再执行添加文章的操作。`TestAdminLogin` 类同理,只是不需要接收参数。最后在 `__main__` 函数中分别创建两个测试类的实例,然后调用 `run()` 方法执行测试函数。
作者回复: 对照一下我的视频和源码
作者回复: 都在源码里面
作者回复: 在初始化方法加参数
作者回复: 看看测试类 是否继承了unittest的父类
作者回复: 这个就是Python语法跟se没啥关系 如果不是默认参数 是必须要传参的
作者回复: 设置断点 看看driver初始化了吗