【使用unittest框架】unittest中的方法:学习setUp()和tearDown()函数以及断言方法
2023-09-11 14:17:00 时间
前言
一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210418。
5、使用unittest框架
unittest框架简介
unittest中类方法和实例方法
测试用例和测试套件
使用unittest重构测试用例
为项目生产测试报告
unittest中类方法和实例方法
-
方法分类:
- 类方法:只运行一次
- 实例方法:每次运行用例都执行
-
执行顺序
- setUpClass->setUp->test01->tearDown->setUp->test02->tearDown->tearDownClass
- 用例之间按用例名称ASCLL码的顺序加载,数字与字母顺序为:0~9,A~Z,a~z
-
实例1(执行顺序)。方法可用快捷键ctr+O选择
-
什么是setUp()和tearDown()函数?
- setUp()函数是在众多函数或者说是在一个类类里面最先被调用的函数,而且每执行完一个函数都要从setUp()调用开始后再执行下一个函数,有几个函数就调用他几次,与位置无关,随便放在那里都是他先被调用。
- tearDown()函数是在众多函数执行完后他才被执行,意思就是不管这个类里面有多少函数,他总是最后一个被执行的,与位置无关,放在那里都行,最后不管测试函数是否执行成功都执行tearDown()方法;如果setUp()方法失败,则认为这个测试项目失败,不会执行测试函数也不执行tearDown()方法。
-
为什么我们要用setUp()和tearDown()函数?
我们利用这一特性在自动化中setup主要是进行测试前的初始化工作,比如在接口测试前面做一些前置的参数赋值,数据库操作等等 teardown是测试后的清除工作,比如参数还原或销毁,数据库的还原恢复等
-
函数和断言方法
方法 | 描述 |
setUp() | 用于测试用例执行前的初始化工作。如测试用例需要访问数据库,可以在setUp()中建立数据库连接并初始化,需要登录web,可以先实例化浏览器等。 |
tearDown() | 用于测试用例执行之后的善后工作,比如关闭数据库连接,关闭浏览器等。 |
assertEqual(a, b, [msg=测试失败时打印的信息]) | 断言a,b两个值是否相等,相等则测试通过。msg为可选参数,用于失败时打印信息 |
assertNotEqual(a, b, [msg]) | 断言a,b两个值是否相等,不相等则测试通过. |
assertTrue(x, [msg]) | 断言x是否True,true则测试通过 |
assertFalse(x, [msg]) | 断言x是否False,False则测试通过 |
assertIs(a, b, [msg]) | 断言a是否是b,是则测试通过 |
assertNotIs(a, b, [msg]) | 断言a是否是b,不是则测试通过 |
assertIsNone(x, [msg]) | 断言x是否是None,是None则测试通过 |
assertIsNotNone(x, [msg]) | 断言x是否是None,是None则测试通过 |
assertIn(a, b, [msg]) | 断言a是否在b中,是则测试通过 |
assertNotIn(a, b, [msg]) | 断言a是否在b中,不在则测试通过 |
assertIsInstance(a, b, [msg]) | 断言a是否是b的一个实例,是则测试通过 |
assertNotIsInstance(a, b, [msg]) | 断言a是否是b的一个实例,不是则测试通过 |
-
实例2
-
最后附上2个实例代码
-
1.实例1代码
import unittest
class MyTestCase(unittest.TestCase):
def setUp(self) -> None:
super().setUp()
print('setUp....')
def tearDown(self) -> None:
super().tearDown()
print('tearDown....')
def test01(self):
print("test01")
def test02(self):
print("test02")
@classmethod
def setUpClass(cls) -> None:
super().setUpClass()
print('setUpClass....')
@classmethod
def tearDownClass(cls) -> None:
super().tearDownClass()
print('tearDownClass....')
if __name__ == '__main__':
unittest.main()
-
2.实例2代码
from selenium import webdriver
import unittest # 第一步引入一个unittest
import time
class Search(unittest.TestCase): # 第二步创建继承一个unittest.TestCase的类
def setUp(self): # 第三步定义一个setup,放一些准备的工作,或者准备一些测试数据。
print('========== 测试开始 ==========')
self.driver = webdriver.Chrome() # 加载chrome驱动
self.driver.maximize_window() # 放大浏览器
self.driver.get("https://www.baidu.com") # 打开网址
print(self.driver.title) # 获取标题头并打印出来
print(self.driver.current_url) # 获取当前页面的url
time.sleep(2) # 休眠2s
def test_001(self): # 进行搜索
self.driver.find_element_by_id('kw').send_keys("小慌慌的博客") # 输入账号
self.driver.find_element_by_id('su').click() # 点击搜索
time.sleep(2)
print(u'进入小慌慌博客的搜索结果页')
def test_002(self): # 进行搜索
self.driver.find_element_by_id('kw').send_keys("selenium") # 输入账号
self.driver.find_element_by_id('su').click() # 点击搜索
time.sleep(2)
print(u'进入selenium的搜索结果页')
def tearDown(self): # 第三步:定义一个tearDown,当我在测试完的时候我要对测试有一个销毁的过程比如说关闭浏览器,那么我们就写在tearDown当中
self.driver.quit()
print('========== 测试结束 ==========\n')
if __name__ == '__main__': # 如果其他的类调用的这个类的时候他就会自动忽略掉这个函数,他是为了测试自身的类用的
unittest.main() # 启动程序
“永不放弃,总有希望在前面等待!”送给自己,也送给正在阅读文章的博友们~
相关文章
- Ubuntu16.04 搜狗输入法输入汉字时候选栏是一串字符数字乱码问题解决方法
- Python进阶学习之特殊方法实例详析
- 机器学习的几种主要学习方法
- 【STM32F429的DSP教程】第7章 ARM DSP源码和库移植方法(IAR8)
- 【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至95章(2022-04-11)
- iconFont的使用方法
- 程序员学习方法:结构化思维
- 【JDK】Java语言中URL和URLConnection类的介绍及其相关方法
- ML&DL:机器学习和深度学习中超参数优化的简介、评估指标、过拟合现象、常用的调参优化方法之详细攻略
- DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介、特点、安装、使用方法详细攻略
- DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略
- Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略
- Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略
- 【零基础】python基础知识 01:只需五分钟,明白python学习方法
- Python Flask框架学习08:Flask HTTP方法
- SQL Sever 2008配置工具中过程调用失败解决方法
- Mac 下python3 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法
- Vue3学习笔记(三)——模板语法、Class 与 Style 、ES6新增数组方法、UI库介绍
- leetCode 48.Rotate Image (旋转图像) 解题思路和方法
- 进阶自动化:知识遗忘真的是技术人员的难题吗?其实是这些新知识的学习方法你还没学会!
- Java学习笔记(六)——方法
- DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介、特点、安装、使用方法详细攻略