unittest 被称作Python版本的JUnit,或称PyUnit。
unittest的重要4个概念:
1.test fixture 测试固件
2.test case 测试用例
3.test suite 测试套件:就是一组测试用例
4.test runner 测试运行器
一、测试用例
unittest框架通过TestCase类来构建测试用例,并要求所有自定义的测试类都必须继承该类,它是所有测试用例的基类,传入一个方法名,将返回一个测试用例实例。
TestCase 的子类中实现测试用例的代码既可以单独运行,也可以和其他测试用例构成测试用例集,然后批量执行
TestCase子类从父类继承的几个特殊的方法,在测试用例执行时均会被定义执行:
1.setUp() ,测试前的初始化工作
2.tearDown(),测试后的清理工作
3.setUpClass(),在setUp()函数之前,只支持一次,必须使用@classmethod装饰器进行修饰
4.tearDownClass()
注意:采用上述动态,需要被执行的测试方法都必须以“test”开头
二、按照特定顺序执行测试用例集合
被测代码文件 Calc.py
#coding = utf -8
class Calc(Object):
def sub(self,x,y,*d)
#减法计算
result = x -y
for i in d:
result -=i
测试代码文件test.py
#coding = utf -8
import unittest
from Calc import Calc
class MyTest(unittest.TestCase):
@Classmethod
def setupClass(cals):
cals.c = Calc()
def test_sub(self):
self.assertEqual(MyTest.c.sub(1,2,3),-4,‘test sub fail‘)
if __name__ == ‘_main_‘:
unittest.main() #启动
..................
对最后启动进行修改,指定顺序:
if __name__ == ‘_main_‘:
suite = unittest.TestSuite()
sutie.addTest(Mytest("test_sub")) #添加到测试容器中
runner = unittest.TextTestRunner()
runner.run(suite)
三、常见的unittest注释方法
[email protected]("skipping") #无条件忽视该测试方法
[email protected](a>5,‘‘condition is not satisfied‘‘) #如果变量a>5,则忽略该测试方法
[email protected]()
四、unittest命令执行
1.模块执行命令
python -m unittest -v Mytest #MyTest为模块,-v参数表示输出测试用例执行的详细信息
2.执行模块中的某个类
python -m unittest -v test_modue.TestClass
3.批量执行测试模块(main中加载)
if __name__ ==‘__main__‘
#当前目录下所有有效的测试模块,“.”表示当前目录,可以用绝对路径
testSuite = unittest.TestLoader().discover(‘.‘)
unittest.TextRunner(verbosity=2).run(testSuite)
命令方式为:D:\xxxx\python -m unittest discover [注意脚本目录]
原文地址:https://www.cnblogs.com/czdbky/p/9660632.html