unittest

Posted marton

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest相关的知识,希望对你有一定的参考价值。

unittest

简介

unittest是python自带的单元测试框架

 

重要概念

1)test fixture

用于初始化和清理测试数据及环境

2)test case

测试用例,是测试的最小单元,一般用来检查一组输入的相应是否符合预期,

3)test suite

测试套件,是测试用例或测试套件的组合,一般用来把需要一起执行的测试用例组合到一起

4)test runner

用于运行测试用例并返回结果

 

主要作用

(1)提供用例组织代码与执行

 当有大量测试用例时,要考虑其扩展性与维护性,考虑用例的规范与组织,使测试更加规范和简单

(2)提供丰富的比较方法

(3)提供丰富的日志

 

案例

来看一个例子

cal.py

class Calculator:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def add(self):
        return self.a + self.b

    def sub(self):
        return self.a - self.b

 

test.py

import unittest
from cal import Calculator

class TestCal(unittest.TestCase):
    def setUp(self):
        print(Test begin...)
        self.cal = Calculator(2, 3)

    def tearDown(self):
        print(Test end...)

    def test_add(self):
        res = self.cal.add()
        self.assertEqual(res, 5)

    def test_sub(self):
        res = self.cal.sub()
        self.assertEqual(res, -1)

if __name__ == __main__:
    #构造测试集
    suite = unittest.TestSuite()
    suite.addTest(TestCal(test_add))
    suite.addTest(TestCal(test_sub))

    runner = unittest.TextTestRunner()
    runner.run(suite)

说明:setUp方法在一个测试用例执行前执行,一般用来初始化变量,生成测试数据,打开浏览器等操作

tearDown方法在一个测试用例执行完成后执行,一般用来清除测试数据,关闭文件,关闭浏览器等操作

unittest要求测试方法必须以‘test‘开头,如test_add, test_sub

unittest.TestSuite()中的addTest()方法向测试套件中添加测试用例

unittest.TextTestRunner()类中的run方法用来运行测试套件中的测试用例。

如果想默认运行当前测试文件下的所有测试用例,直接可以用unittest.main()方法,main方法查找测试用例有两个规则:

(1)测试类必须继承unittest.TestCase

(2)测试用例的方法必须以‘test’开头,如test_add

 

以上是关于unittest的主要内容,如果未能解决你的问题,请参考以下文章

SentTestCase 不会将 UnitTest 失败突出显示为代码错误

python unittest

基于appium实现的线性代码引用unittest单元测试框架

python——unittest(单元测试)

Python Unittest Discover即使失败也返回退出代码0

unittest2框架------执行原理