在python里面的单元测试框架 unitest

1.单元测试概述:

从软件架构的角度来说,测试最重要的步骤是在软件开发的时候界入比较好,所以在早期测试的界入,从软件经济学的角度上来说,发现的问题解决成本低,投入的资源比较少。因此,对一个测试的系统,开始最佳的测试就是源代码级别的测试,也就是单元测试阶段,这个过程也称为白盒测试。单元测试是最基本也是觜底层的测试类型,单元测试应用于最基本的软件代码,如类,函数。方法等。单元测试通过可执行的断言检查被测单元的输出是否满足期望结果,在测试金字塔的理论上来说,越往下的测试投入资源越高,得到的回报率就越大

 

 

测试用例:编写的每个具体的测试场景

测试固件(勾子方法):初始化和清理

测试执行testRunner:具体执行被编写的测试套件或者是测试用例

测试报告testReport:测试报告反馈实际的测试结果


自动化测试用例要素包含:

1、前提条件(初始化)setUp()

2、测试步骤

3、结果验证

4、清理 tearDown()

关于测试用例的书写规范:

1、每个测试用例都必须是test开头的,一般建议test_

2、每个测试用例都应该有标题

3、每个测试用例建议只写一个测试场景

4、每个测试用例都必须得有结果信息,也就是断言

5、每个测试用例都是独立的,测试用例之间不会因为业务的依赖关系而关系


 

 

2.运用类方法来进行测试

复制代码
 1 from selenium import webdriver
 2 import unittest
 3 
 4 class BaiduTest(unittest.TestCase):
 5     @classmethod
 6     def setUpClass(cls) -> None:
 7         cls.driver=webdriver.Chrome()
 8         cls.driver.get('http://www.baidu.com/')
 9         cls.driver.maximize_window()
10         cls.driver.implicitly_wait(30)
11     @classmethod
12     def tearDownClass(cls) -> None:
13         cls.driver.quit()
14 
15     def test_baidu_title(self):
16         '''百度测试:验证百度首页的title'''
17         # assert self.driver.title=='百度一下,你就知道'
18         self.assertEqual(self.driver.title,'百度一下,你就知道')
19 
20     def test_baidu_url(self):
21         '''百度测试:验证百度首页的URL'''
22         assert self.driver.current_url=='https://www.baidu.com/'
23 
24     def test_baidu_video(self):
25         '''百度测试:验证点击视频后跳转视频的页面'''
26         nowwindow=self.driver.current_window_handle   #获取当前窗口
27         self.driver.find_element_by_link_text('视频').click()
28         allwindows=self.driver.window_handles
29         for handler in allwindows:   #在handle里面循环所有窗口
30             if handler!=nowwindow:   #如果handle不等于当前窗口(百度网址)
31                 self.driver.switch_to.window(handler)  #进入视频窗口
32                 self.assertEqual(self.driver.current_url,'https://haokan.baidu.com/?sfrom=baidu-top')   #断言当前窗口的网址
33                 self.driver.close()
34         self.driver.switch_to.window(nowwindow)
35     def test_baidu_map(self):
36         '''百度测试:验证点击视频后跳转地图的页面'''
37         nowwindow=self.driver.current_window_handle
38         self.driver.find_element_by_link_text('地图').click()
39         allwindows=self.driver.window_handles
40         for handler in allwindows:
41             if handler!=nowwindow:
42                 self.driver.switch_to.window(handler)
43                 self.assertTrue(self.driver.current_url.startswith('https://map.baidu'))
44                 self.driver.close()
45         self.driver.switch_to.window(nowwindow)
46 
47 if __name__ == '__main__':
48     unittest.main(verbosity=2)
复制代码

3.运用模块来进行测试

复制代码
 1 from selenium import webdriver
 2 import unittest
 3 class BaiduTest(unittest.TestCase):
 4     @classmethod
 5     def setUpClass(cls) -> None:
 6         cls.driver=webdriver.Chrome()
 7         cls.driver.get('http://www.baidu.com/')
 8         cls.driver.maximize_window()
 9         cls.driver.implicitly_wait(30)
10     @classmethod
11     def tearDownClass(cls) -> None:
12         cls.driver.quit()
13 
14     def test_baidu_title(self):
15         '''百度测试:验证百度首页的title'''
16         # assert self.driver.title=='百度一下,你就知道'
17         self.assertEqual(self.driver.title,'百度一下,你就知道')
18 
19     def test_baidu_url(self):
20         '''百度测试:验证百度首页的URL'''
21         assert self.driver.current_url=='https://www.baidu.com/'
22 
23     def test_baidu_video(self):
24         '''百度测试:验证点击视频后跳转视频的页面'''
25         nowwindow=self.driver.current_window_handle   #获取当前窗口
26         self.driver.find_element_by_link_text('视频').click()
27         allwindows=self.driver.window_handles
28         for handler in allwindows:   #在handle里面循环所有窗口
29             if handler!=nowwindow:   #如果handle不等于当前窗口(百度网址)
30                 self.driver.switch_to.window(handler)  #进入视频窗口
31                 self.assertEqual(self.driver.current_url,'https://haokan.baidu.com/?sfrom=baidu-top')   #断言当前窗口的网址
32                 self.driver.close()     #关闭
33         self.driver.switch_to.window(nowwindow)    #切换到当前窗口
34     def test_baidu_map(self):
35         '''百度测试:验证点击视频后跳转地图的页面'''
36         nowwindow=self.driver.current_window_handle
37         self.driver.find_element_by_link_text('地图').click()
38         allwindows=self.driver.window_handles
39         for handler in allwindows:
40             if handler!=nowwindow:
41                 self.driver.switch_to.window(handler)
42                 self.assertTrue(self.driver.current_url.startswith('https://map.baidu'))
43                 self.driver.close()
44         self.driver.switch_to.window(nowwindow)
45 
46 if __name__ == '__main__':
47     # suite=unittest.TestLoader().loadTestsFromTestCase(BaiduTest)   #进行实例化 运用类里面的方法 loadTestsFromTestCase
48     # unittest.TextTestRunner().run(suite)                      #调用loadTestsFromTestCase里面的run方法
49 
50 #按照模块来进行执行
51     suite = unittest.TestLoader().loadTestsFromModule('按照测试类来执行')
52     unittest.TextTestRunner().run(suite)
复制代码

 3.加载所有的模块

在我们要进行自动化测试的时候,如果一个模块一个模块进行操作,在某种意义上也不算是一个合格的自动化测试人员,这时候我们就需要进行加载所有的测试模块:

代码如下:

1 def getTests():
2     '''加载所有的测试模块'''
3     suite=unittest.TestLoader().discover(
4         start_dir=os.path.dirname(__file__),
5         pattern='test_*.py'
6     )
7     return suite

在代码当中我们可以看到 start_dir当中为现开始执行的路径,pattern为正则,是以什么开头的文件 开始执行。

 

posted on   钢镚芽儿哟  阅读(195)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示