unittest又名PyUnit, Python单元测试框架(The Python unit testing framework),简称为PyUnit。自从 Python 2.1 版本后,PyUnit成为 Python标准库的一部分。
为什么需要使用unittest单元测试框架?
当我们写的用例越来越多时,我们就需要考虑用例编写的规范、组织与管理,以便于后期的维护,而python-unittest正是这样一款工具。我们这里用一个简单示例来展示用unittest脚本是什么样子的。
创建计算器类calculator
# Calculator.py
class calculator(object):
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return (self.a + self.b)
def minus(self):
return (self.a - self.b)
def multip(self):
return (self.a * self.b)
def divide(self):
return (self.a / self.b)
创建一个简单的单元测试用例
import unittest # 导入unittest 包
from unittest_doc.com.Calculator.Calculator import calculator # 引入需要测试的包
# 所有用例需继承TestCase类或者其子类
class simple_test(unittest.TestCase):
def setUp(self):
print('@@@初始化test_simple@@@')
self.a = calculator(1, 2)
def test_add(self):
print('---测试用例test_simple add---')
self.assertEqual(self.a.minus(), -1, '两值不相等')
self.assertEqual(self.a.add(), 3, '两值不相等')
self.assertNotEqual(self.a.divide(), 1, '两值不相等')
def test_divide(self):
print('---测试用例test_simple divide---')
self.assertEqual(self.a.divide(), 0.5)
def tearDown(self):
print('@@@结束test_simple@@@')
if __name__ == '__main__':
unittest.main()
运行结果:
@@@初始化test_simple@@@
---测试用例test_simple add---
@@@结束test_simple@@@
@@@初始化test_simple@@@
---测试用例test_simple divide---
@@@结束test_simple@@@
测试用例由setUp(),test_add(),test_divide(),tearDown() 4个部分组成,它们放在一个继承于unittest.TestCase 的测试类下。
仔细观察输出结果,每个用例运行前都会运行 setUp(),结束后会运行tearDown(),从这里应该能够看出他们两的作用。
setUp() 用于测试用例执行前的准备工作。
如测试用例中需要访问数据库,可以在setUp中建立数据库连接并进行初始化;用例需要使用web,可以先实例化浏览器;app测试需先要启动app,可先实例化app。
tearDown() 用于用例执行之后的善后工作。如关闭数据库连接,关闭浏览器,关闭app。当用例没运行成功是他也会执行。
test_add(),test_divide() 测试脚本,必须已test开头或者结尾,如用unittest.main()方法执行用例,需要已test开头。
一个TestCase 的实例就是一个测试用例。测试用例就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),实现测试过程的代码(run),以及测试后环境的还原(tearDown)。
单元测试(unittest)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:310357728(里面有各种软件测试资源和技术讨论)
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!