一.是什么:是python自带的一个单元测试框架,也是python里面最基本的单元测试框架,存放在python中的lib目录下
为什么使用:在本次项目内使用,来为我们组织测试用例
unittest 中的四个核心概念:
test Case 测试用例
test fixture 测试夹具
test runner 测试执行
test suite 测试套件
二.unittest的书写规则
1.测试文件必须以test开头 如:test_01_unittest入门脚本.py
2.测试类必须继承unittest.TestCase类
3.测试类也必须Test开头 如:class TestLogin(unittest.TestCase)
4.测试方法最好以小写test开头 如 :def test_01_login(self):
5.在测试py文件中去执行代码,unittest.main()
6.在测试类里面,可以有普通方法,但是普通方法需要被测试方法调用
三.test fixture 测试夹具
语法:
方法级别:setup() 每个测试方法之前执行的代码
teardown() 每个测试方法之后执行代码
类级别:setupclass() 每个测试类之前执行的方法
teardownclass() 每个测试类之后执行的方法
类级别都需要使用@classmethod装饰器
四.测试用例的执行顺序
在unittest中,顺序默认按照AscII码的顺序
自定义用例执行顺序:给每一条用例前面加上序号
五 .断言
判断预期结果和实际结果是否相符合
语法:
self.assertEqual(a,b,msg=‘错误描述‘) --------判断a ==b成立,则用例通过
self.assertTrue(x,msg='错误')--------------判断表达式是否为true,为true用例通过
self.assertin(a,b,msg='错误')--------------判断a in b 成立,则用例通过
六.跳过测试
# 装饰器实现跳过用例
1.当我们写的部分用例,在某些情况下不需要去执行,可以跳过
2.当系统跟新之后,部分测试用例失效,但是不确定后面是否还会再改回来,就直接跳过
@unittest.skip()------没有条件,直接跳过
@unittest.skipif(表达式,原因)表达式为真跳过
@unittest.skipunless(表达式,原因)表达式为假,跳过
七.测试套件(适合作为调试用例)
把需要执行的用例放到一个套子中-------test suite
suite = unittest.Testsuite()
suite.addTest(测试类('测试方法'))
八.测试执行
使用测试执行去执行所有在套子中的用例------test runner
runner = unittest.TestRunner()
runner.run(suite)
# 补充
runAllCase:
test suite:unittest.defaultTest:oader.discover(start-dir=用例目录,pattern=选取用例执行的规则)
九.HTMLTestRunner:第三方插件
1.生成报告放在report里面
2.生成报告 应该以.html结尾
10.数据驱动
# 有点用例只是参数不一样,其他代码完全一样,可以通过改变参数来实现一条用例方法,
执行多种不同的测试场景,在unittest中使用ddt来提供
# ddt可以参数化读取列表嵌套列表形式,
列表嵌套字典的数据