unittest 详解
2024-08-31 02:11:19
内容总括
一. 初始化
- setUp 与 tearDown
- setUpClass 与 tearDownClass
- unittest.main(verbosity=0/1/2)
二. 执行顺序
- 按顺序执行 addTest
- 按测试类执行,应用场景为:在一堆类里只想执行其中的一个类
- 按测试模块执行,一个py文件代表一个模块,应用场景为:批量执行
三. 断言
- assertEqual(a,b)
- assertNotEqual(a,b)
- assertTrue(x)
- assertFalse(x)
- assertIs(a,b)
- assertIsNot(a,b)
- assertIsNone(x)
- assertIsNotNone(x)
- assertIn(a,b)
- assertNotIn(a,b)
四. 报告
五. 其他
- 分离初始化模块,即公共模块
- skip, skipIf
解析
1. setUp 与 tearDown
- 有几个test,就执行几次setUp 与 tearDown,浪费资源
2. setUpClass 与 tearDownClass
- 推荐使用,只初始化一次固件,要加 @classmethod
class BaiDuTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("start...") @classmethod
def tearDownClass(self):
print("end...")
if __name__ == '__main__':
unittest.main(verbosity=1)
3. unittest.main(verbosity=0/1/2)
- 默认为1,0与1 几乎无差别,展示测试总个数与全局结果
- 2 为详情展示
4 .按顺序执行 addTest
import unittest class BaiDuTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("start...") @classmethod
def tearDownClass(self):
print("end...")
def test_baidu(self):
print("baidu...")
def test_souhu(self):
print("souhu...") if __name__ == '__main__':
suit = unittest.TestSuite()
suit.addTest(BaiDuTest.test_souhu)
suit.addTest(BaiDuTest.test_baidu)
unittest.TextTestRunner(verbosity=2).run(suit)
5. 按测试类执行
import unittest class BaiDuTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("start...") @classmethod
def tearDownClass(self):
print("end...")
def test_baidu(self):
print("baidu...")
def test_souhu(self):
print("souhu...") class BaiDuTest2(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("start2...") @classmethod
def tearDownClass(self):
print("end2...")
def test_baidu(self):
print("baidu2...") if __name__ == '__main__':
suit = unittest.TestSuite(unittest.makeSuite(BaiDuTest2))
unittest.TextTestRunner(verbosity=2).run(suit)
或者:
suit = unittest.TestLoader().loadTestsFromTestCase(BaiDuTest2)
unittest.TextTestRunner(verbosity=2).run(suit)
6. 按测试模块执行
# -*- coding:utf-8 -*-
import unittest
import os class BaiDuTest(unittest.TestCase):
def test_baidu(self):
print("baidu...") if __name__ == '__main__':
# 定义测试集所在文件夹
path = os.path.dirname(__file__) # 当前执行路径
print(path)
# discover = unittest.defaultTestLoader.discover(path,pattern='test*.py') # 支持正则
discover = unittest.defaultTestLoader.discover(path,pattern='ttst.py')
runner = unittest.TextTestRunner(verbosity=2).run(discover)
7. 分离初始化模块
class InitTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("start...") @classmethod
def tearDownClass(self):
print("end...") class BaiDuTest(InitTest):
def test_baidu(self):
print("baidu...")
8. skip, skipIf
class BaiDuTest(InitTest):
def test_baidu(self):
print("baidu...") @unittest.skip("skip TestCase")
def test_baidu2(self):
print("baidu2...") @unittest.skipIf(1!=1,"skip TestCase")
def test_baidu3(self):
print("baidu3...") if __name__ == '__main__':
unittest.main(verbosity=2)
9. 断言
def test_baidu2(self):
self.assertEqual(1,'')
self.assertTrue(0)
self.assertFalse(0)
self.assertIn('www','http://www.b')
⚠️ 第二行代码错了,就不会执行执行第3,4,5行代码
最新文章
- ICMP的应用--Traceroute
- 【BZOJ2874】训练士兵(主席树)
- [MCSM]随机搜索和EM算法
- 设置button不同状态下的背景色,即把这个颜色变成图片设置成,背景图片
- CC150 - 11.5
- window Jconsole链接到CenOS 监控Tomcat
- pwn学习之dl_resolve学习篇
- CDZSC_2015寒假新人(1)——基础 d
- [问题]安装express,已经加了-g,还是找不到express命令
- 主java程序猿知识体系结构
- Android中的线程池
- docker修改默认存储位置
- Vue 指令篇 案例(输入提交显示 提交数据_列表)
- HihoCoder - 1801 :剪切字符串 (置换与逆序对)
- CGLIB介绍
- <;header>;<;footer>;引用
- 修改ie11的默认搜索引擎和主页
- JS实现IE下打印和打印预览
- Asp.net Vnext 模块化实现
- C#-WebForm-LinQ(一)-LinQ:语言集成查询(Language Integrated Query)-增删改查、属性扩展
热门文章
- realpython教程之机器学习之Windows下的环境配置
- Linux安装redis logstash
- windows ping命令
- 创建Sqoop作业,报错Exception in thread ";main"; java.lang.NoClassDefFoundError: org/json/JSONObject
- P1541 乌龟棋(动态规划)
- 网站如何接入微信公众号JSAPI支付PHP版
- INPUT和CONSTRUCT指令——范例报表查询,作用让用户输入数据,自动生成SQL的WHERE条件,带开窗查询
- CentOS7-部署kubernetes
- Leetcode 杂题
- Java多线程(一):线程与进程