unittest是Python的标准的单元测试框架,能够很好的和自动化测试相结合,并且有独立的测试报告框架
unittest的主要构成部分
1)test fixture
用于初始化清理等操作。在selenium测试中,我们可以用来做webdriver的初始化。
2)testcase
测试用例,unittest的最小单元。
用于对指定输入的返回结果进行检测。
在unittest中提供了testcase基类,用来创建新的测试用例。
3)testsuit
测试套件,一系列测试用例或测试套件的组合
在unittest中由testsuit来实现
4)test runner
测试执行器,负责用例执行并生成测试报告。
在unittest中提供了命令行模式和Gui模式来执行
unittest的标准案例
import unittest import sys def add(a,b): return(a+b) class demoTest(unittest.TestCase): def test_add_4_5(self): self.assertEqual(add(4,5),9) if __name__=='__main__': unittest.main()
Ran 1 test in 0.000s
OK
下面一步步展示如何使用unittest来测试
1)导入unittest模块
import unittest
2)定义一个被测试函数
def add(a,b): return(a+b)
3)创建一个 unittest.TestCase子类
class demoTest(unittest.TestCase):
4)在demoTest新增一个测试方法:test_4_5
测试方法必须以test开头
class demoTest(unittest.TestCase): def test_add_4_5(self): self.assertEqual(add(4,5),9)5)在新增的测试方法test_4_5中添加断言验证
class demoTest(unittest.TestCase): def test_add_4_5(self): self.assertEqual(add(4,5),9)
6)最后在main函数中调用unittest方法启动测试。
下表信息是在运行unittest时可能的输出信息
序号 | 描述 |
1 | OK表示测试通过 |
2 | fail表示测试不通过,控制台输出断言异常信息 |
3 | ERROR表示测试异常 |
将上面的断言语句改写成
self.assertEqual(add(4,5),8)输出的错误结果为F
======================================================================
FAIL: test_add_4_5 (__main__.demoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:/Users/minkl/PycharmProjects/untitled/unitest.py", line 8, in test_add_4_5
self.assertEqual(add(4,5),8)
AssertionError: 9 != 8
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (failures=1)