Selenium 自动化测试实战
郭宏志
享学志成科技创始人兼 CEO
18891 人已学习
新⼈⾸单¥68
课程目录
已完结/共 69 讲
Selenium 自动化测试实战
登录|注册
留言
8
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 39 | 使用unittest重构测试用例:掌握使用unittest模块的方法和技巧
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 聊聊Web自动化测试:黑盒、白盒、α测试、β测试、冒烟测试、回归测试
04 | Selenium三剑客:WebDriver、IDE、Grid一网打尽
05 | Selenium开发环境搭建
06 | 下载安装浏览器驱动:教你解决最麻烦的版本匹配问题
07 | 第一个Selenium测试:Selenium测试流程、源码分析
08 | 实现元素定位:掌握Selenium八大定位方法
09 | 通过打车生活案例,深入剖析WebDriver运行原理
10 | 掌握WebDriver核心方法和属性的使用
11 | 掌握WebElement核心方法和属性的使用
12 | form表单:熟练掌握form表单操作步骤
13 | 掌握checkbox和radiobutton的定位技巧
14 | 下拉列表:熟练使用Select类,来实现下拉列表定位
15 | 弹框处理:掌握alert、confirm、prompt三种弹出的用法
16 | Selenium三种等待方式:剖析原理、用法和应用场景
17 | Selenium等待条件:掌握17种元素等待条件
18 | 掌握鼠标单击、双击、右击,键盘输入、键盘组合键的应用
19 | 熟练执行JavaScript的方法和技巧,掌握JavaScript操作滚动条
20 | Selenium屏幕截图:实现屏幕截屏、按照日期时间格式保存图片
21 | 掌握frame、iframe定位,熟练frame的切入和切出
22 | 下载安装Selenium IDE:下载安装Chrome、Firefox插件IDE
23 | 熟练Selenium IDE菜单栏、工具类、命令窗口的使用
24 | Selenium IDE实现录制和回放及脚本导出
25 | 项目环境搭建:安装JDK、MySQL、Tomcat和测试系统
26 | 需求分析和用例设计:深度挖掘需求,掌握测试用例设计范式
27 | 项目架构设计:掌握分层设计思想,合理设计目录和包结构
28 | 解决验证码问题-方案一:使用pytesseract和Pillow实现验证码识别
29 | 解决验证码问题-方案二:通过第三方AI库识别验证码
30 | 实现工具类:设计获得验证码、随机字符串生成、cookie操作工具类
31 | 完成用户注册测试用例:解决验证码、等待弹框等复杂内容
32 | 完成用户登录测试用例:实现登录成功和失败测试
33 | 完成管理员登录测试用例:完成验证码正确和错误测试用例
34 | 完成文章分类测试用例:解决测试用例依赖问题
35 | 完成添加、删除文章测试用例
36 | unittest简介:测试用例、测试套件、测试运行器、测试加载器
37 | unittest中的方法:掌握各种setup、teardown和断言方法
38 | 测试用例、测试套件和测试加载器:掌握加载测试用例的四种方法
39 | 使用unittest重构测试用例:掌握使用unittest模块的方法和技巧
40 | 为项目添加测试报告:使用第三方模块实现测试报告
41 | pytest框架简介:pytest安装、用例编写规则、执行用例
42 | pytest标记:查找测试策略、标记测试函数
43 | pytest参数化处理:使用参数化装饰器、解析列表、元组、字典等数据
44 | pytest Fixture:使用fixture实现用例之间的调用
45 | pytest setup 和 teardown
46 | pytest allure生成测试报告
47 | 使用pytest重构项目:实现用例依赖、测试报告、数据参数化
48 | logging模块简介:日志的作用、等级和常用函数
49 | logging日志格式输出:日志发生的时间、文件、模块、行号等信息格式输出
50 | logging模块四大组件:Logger、Handler、Formatter、Filter的用法
51 | 为项目添加日志:将日志应用到项目
52 | 使用csv模块读取CSV文件,使用pytest参数化实现DDT
53 | 使用json模块读取json文件,使用pytest参数化实现DDT
54 | 使用xlrd模块读取excel文件,使用pytest参数化实现DDT
55 | Selenium读取数据库数据:将数据保存到数据库,实现数据驱动的测试
56 | Selenium DDT:使用DDT模块实现数据驱动的测试
57 | 使用DDT思想重构项目:使用数据库保存数据,将数据驱动思想应用到项目
58 | POM设计模式简介:理解页面-对象-模型设计模式,实现代码的松耦合
59 | 设计BasePage类:设计基类,提高项目的代码重用性
60 | 设计项目页面对应的PO类:使用POM设计模式设计PO类
61 | 设计项目测试用例:将POM设计模式应用到项目
62 | Selenium Grid下载安装:配置Java运行环境,下载安装Selenium Grid
63 | Selenium注册node节点
64 | 使用Selenium执行远程测试
65 | Jenkins环境搭建:下载安装Jenkins
66 | 在Jenkins中运行项目
67 | 邮件通知:实现邮件通知功能
68 | 定时运行项目,实现真正的自动化测试
69 | 结课测试&结束语
本节摘要
登录 后留言

全部留言(8)

  • 最新
  • 精选
小阳
def __init__(self,method,login): unittest.TestCase.__init__(self,method) self.login = login if __name__ == '__main__': login = TestAdminLogin() login.test_login_ok() test_article = TestAddArticle() 提示参数method和login未填,这里的method传什么内容? test_article.test_add_article_ok()

作者回复: 在使用 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()` 方法执行测试函数。

2022-04-05
yjluo
class LoginTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.driver=webdriver.Chrome() cls.driver.get('*****') cls.driver.maximize_window() def test1(self): pass @classmethod def tearDownClass(cls) -> None: cls.driver.qiut() 想问下最后调用tearDownClass()方法,cls.识别不了driver变量,没法关闭浏览器,怎么解决?

作者回复: 对照一下我的视频和源码

2022-02-20
ZBQ
有没有完整的重构代码

作者回复: 都在源码里面

2021-09-11
Geek_88b1a8
老师,我在用unittest重构这个添加文章但是时候报这错,尝试 了好久都没解决,您可以帮我看一下是什么问题吗? 报错的信息: TypeError: __init__() missing 1 required positional argument: 'login' 我的调用: if __name__ == '__main__': login = TestAdminLogin() login.test_admin_login_ok() testArticle = TestArticle(login) testArticle.test_add_article_ok()

作者回复: 在初始化方法加参数

2020-12-02
3
瓜皮喵宝宝
老师,在做unittest重构时,比如test_article.py类中,改写为unittest断言方式,会报错,如: self.assertEqual(msg_text, expected) 执行后AttributeError: 'TestArticle' object has no attribute '_type_equality_funcs' 报错位置就在改写的断言上; 调整为之前,assert msg.text == expected则执行成功; 断点调试的时候比较看了下msg_text 和 expected也是一致的。

作者回复: 看看测试类 是否继承了unittest的父类

2020-10-04
西西
class TestArticle(unittest.TestCase): def __init__(self, method, login): unittest.TestCase.__init__(self, method) self.login = login 老师 new TestArtic类的对象时候为什么不需要传method参数,只需要传login参数呢

作者回复: 这个就是Python语法跟se没啥关系 如果不是默认参数 是必须要传参的

2020-09-05
2
落叶知秋cium
if __name__ == '__main__': login = TestUserLogin() login.test2_user_login_ok() class TestUserLogin(unittest.TestCase): ------------------------------------ @classmethod def setUpClass(cls) -> None: cls.driver = webdriver.Chrome() cls.driver.get(url) cls.driver.maximize_window() 运行main的时候会报 AttributeError: 'TestUserLogin' object has no attribute 'driver'

作者回复: 设置断点 看看driver初始化了吗

2020-08-14
3
从前从前
没有人发现,老师后面跑的不是重构的代码吗,应该是unittest包下的,引入包没改
2022-04-17
收起评论