常州做网站公司哪家好,建网站基础需要学什么,wordpress 模板下载失败,做的比较好的医院网站unittest框架的优点
(1)能够组织多个用例去执行 (2)提供丰富的断言方法 (3)能够生成测试报告
unittest框架的核心要素
1. TestCase测试用例
TestCase(测试用例)#xff0c;最小的测试单元#xff0c;创建的测试类需要继承该基类
步骤#xff1a;
#xff08;1#x…unittest框架的优点
(1)能够组织多个用例去执行 (2)提供丰富的断言方法 (3)能够生成测试报告
unittest框架的核心要素
1. TestCase测试用例
TestCase(测试用例)最小的测试单元创建的测试类需要继承该基类
步骤
1导包import unittest
2新建测试类并继承unittest.TestCase
3测试方法必须以test字母开头
运行
1运行测试类的所有测试方法光标定位到类当前行右键运行
2运行单个测试方法光标放到测试方法当前行
下面以自定义的计算器cal01.py进行测试测试代码test_cal01.py
#cal01.py
# 自定义计算器
#被测试部分-*/
def my_add(a,b):return ab
def my_sub(a,b):return a-b
def my_mul(a,b):return a*b
def my_div(a,b):return a/b
#test_cal01.py
from cal01 import *
import unittest
class MyTest(unittest.TestCase):#MyTest继承unittest.TestCasedef test_add01(self):assert 3my_add(1,2)def test_add02(self):assert 3.0my_add(1.0,2)def test_add03(self):assert 3.0my_add(1.0,2.0)
在类MyTest上运行执行当前类下的所有测试方法 在test_add01上运行执行当前测试方法 2. TestSuite测试套件
TestSuite(测试套件) 多条测试用例集合在一起就是一个TestSuite
使用addtest()方法将测试用例添加到测试套件中
步骤
1导包 import unittest
2实例化 suite unittest.TestSuite()
3添加用例
suite.addTest(ClassName(“methodName”))#添加单个测试方法 suite.addTests([ClassName1(“methodName1”),ClassName2(“methodName2”)])#添加多个测试方法
TestSuite需要配合TestRunner才能被执行。
3. TestRunner 测试执行器
步骤
1导包 import unittest
2实例化 runner unittest.TextTestRunner()
3执行 runner.run(suite) #suite:测试套件名称
下面执行test_cal01.py中在测试套件中加入test_add03和test_add01并执行
#testsuite01.py
import unittest
from test_cal01 import MyTest
suite unittest.TestSuite()#实例化测试测试套件
suite.addTest(MyTest(test_add03))#添加测试用例————添加单个测试方法
suite.addTest(MyTest(test_add01))
# suite.addTests([MyTest(test_add03),MyTest(test_add01)])
runner unittest.TextTestRunner()#实例化
runner.run(suite)#suite:测试套件名称
4. TestLoader 测试装载器
使用unittest.TestLoader,通过该类下面的discover()方法自动搜索指定目录下指定开头的.py文件
假设当前目录下有n个文件命名格式为testCal01.py~testCal99.py
#testloader01.py
import unittest
suiteunittest.TestLoader().discover(./,patterntestCal*.py)
runnerunittest.TextTestRunner().run(suite)
5. Fixture 测试固件
对测试环境进行初始化和销毁
1方法级别 def setUp() / def tearDown()
几个测试函数执行几次每个测试函数执行之前都会执行setUp执行之后都会执行setDown
2类级别 def setUpClass() / def tearDownClass()
测试类运行之前运行一次setUpClass类运行之后运行一次tearDownClass
注意类方法必须使用classmethod修饰
3模块级别 def setUpModule() / def tearDownModule()
特性模块运行之前执行一次setUpModule运行之后运行一次tearDownModule
#test_fixture.py
from cal01 import *
import unittest
class MyTest(unittest.TestCase):#MyTest继承unittest.TestCasedef setUp(self):print(方法初始化执行)def tearDown(self):print(方法结束执行)classmethoddef setUpClass(cls):print(类初始化执行)classmethoddef tearDownClass(self):print(类结束执行)def test_add01(self):assert 3my_add(1,2)def test_add02(self):assert 3.0my_add(1.0,2)def test_add03(self):assert 3.0my_add(1.0,2.0)
附1.运行测试用例的结果
unittest默认根据ASCII码值顺序加载测试用例 数字与字母的顺序为0~9A~Za~z 不是按照测试用例的创建顺序从上到下执行
可以由测试套件TestSuite类的addTest()方法添加测试用例控制顺序
附2.测试运行的结果表示
. :一条运行通过的测试用例
F:一条运行失败的测试用例
s:一条运行跳过的测试用例
E:一条运行错误的测试用例
附3.测试断言
断言方法由TestCase父类提供所以要用self调用
self.assertEqual(a,b) #判断ab
self.assertIn(a,b) #b是否包含a 注意包含不能跳字符
self.assertTrue(a) #判断a是否为True
附4.测试跳过
使用方式(可以修饰方法也可以修饰类)
#直接将测试函数标记为跳过
unittest.skip(代码未完成)
#根据条件判断测试函数是否跳过
unittest.skipIf(condition,reason)