一、Python之单元测试以及断言assert二、单元测试的基本写法三、数据库测试四、基本assert断言方法
所有的程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能。目的是检验其是否满足需求,并得出特定的结果,以达到弄清楚预期结果和实际结果之间的差别的最终目的。
单元测试:对单独的代码块(例如函数)分别进行测试,以保证它们的正确性
集成测试:对大量的程序单元的协同工作情况做测试
系统测试:同时对整个系统的正确性进行检查,而不是针对独立的片段
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件。
在众多的测试中,与程序开发人员最密切的就是单元测试,因为单元测试是由开发人员进行的,而其他测试都由专业的测试人员来完成。所以我们主要学习单元测试。
setUp:表示前置条件,它在每一个用例执行之前必须会执行一次
setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。
tearDown:表示释放资源,它在每次用例执行完之后会执行一次
tearDown可以理解为我们测试完毕后,需要关闭浏览器。
1. 每次执行函数方法时,必须先执行一次setUp()函数,执行完一个函数方法后,必须再执行一次tearDown()函数
2. 执行函数的时候有序号时,例如testxx1,testxx2 会根据序号来进行执行
3. 当函数方法不是以test开头是,不执行该方法。
若我想要改变setUp()在所有用例执行之前只执行一次,和tearDown()函数在所有用例执行之后只执行一次的话
1. 需要使用python中的@classmethod内置装饰器
2. 需要把函数名改为setUpClass(cls) / tearDownClass(cls)
#!/usr/bin/env/python # -*-coding:utf-8-*- import pytest """ 只对函数用例生效,不在类中 setup_function teardown_function """ def setup_function(): print "setup_function():每个方法之前执行" def teardown_function(): print "teardown_function():每个方法之后执行" def test_01(): print "正在执行test1" x = "this" assert 'h' in x def test_02(): print "正在执行test2" x = "hello" assert hasattr(x,"hello") def add(a,b): return a+b def test_add(): print "正在执行test_add()" assert add(3,4) == 7 if __name__=="__main__": pytest.main(["-s","test_function.py"]) # 运行结果为:(-s为了显示用例的打印信息 -q只显示结果不显示过程)基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。
序号断言方法断言描述1assertEqual(arg1, arg2, msg=None)验证arg1=arg2,不等则fail2assertNotEqual(arg1, arg2, msg=None)验证arg1 != arg2, 相等则fail3assertTrue(expr, msg=None)验证expr是true,如果为false,则fail4assertFalse(expr,msg=None)验证expr是false,如果为true,则fail5assertIs(arg1, arg2, msg=None)验证arg1、arg2是同一个对象,不是则fail6assertIsNot(arg1, arg2, msg=None)验证arg1、arg2不是同一个对象,是则fail7assertIsNone(expr, msg=None)验证expr是None,不是则fail8assertIsNotNone(expr, msg=None)验证expr不是None,是则fail9assertIn(arg1, arg2, msg=None)验证arg1是arg2的子串,不是则fail10assertNotIn(arg1, arg2, msg=None)验证arg1不是arg2的子串,是则fail11assertIsInstance(obj, cls, msg=None)验证obj是cls的实例,不是则fail12assertNotIsInstance(obj, cls, msg=None)验证obj不是cls的实例,是则fail参考:https://www.cnblogs.com/gcgc/p/11513184.html
About Me:小麦粒
● 本文作者:小麦粒,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用
● 作者博客地址:https://blog.csdn.net/u010986753
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● 个人微信号:pythonbao 联系我加微信群
●个人 QQ:87605025
● QQ交流群pythonbao :483766429
● 公众号:python宝 或 DB宝
● 提供OCP、OCM和高可用最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
欢迎赞赏哦!有您的支持,小麦粒一定会越来越好!