unittest_认识unittest(1)
阅读原文时间:2023年07月10日阅读:1

unittest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件。 使用unittest前需要了解该框架的五个概念: 即test case,test suite,test loader,test runner,test fixture。

  • test case:一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前环境准备(setUp),执行测试(run),以及测试后环境的还原(tearDown)。
  • test suite:多个测试用例的集合,测试套件或测试计划。
  • test loader:加载TestCase到TestSuite中的,其中loadTestsFrom*()方法用于寻找TestCase,并创建它们的实例,然后添加到TestSuite中,返回TestSuite实例。
  • test runner:执行测试用例,并将测试结果保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
  • test fixture:一个测试用例执行前的环境准备以及执行后的环境还原就是一个fixture。

了解了概念后,我们来看一段简单的代码

import unittest

class Demo(unittest.TestCase):

@classmethod  
def setUpClass(cls) -> None:  
    print("setUpClass被执行\\n")

@classmethod  
def tearDownClass(cls) -> None:  
    print("tearDownClass被执行")

def setUp(self) -> None:  
    print("setup被执行")

def tearDown(self) -> None:  
    print("teardown被执行\\n")

def test\_a(self):  
    print("test\_a被执行")

def test\_c(self):  
    print("test\_c被执行")

def test\_b(self):  
    print("test\_b被执行")  
    a, b = 1, 2  
    assert a+b == 3

def d(self):  
    print("d被执行")

if __name__ == '__main__':
unittest.main()

执行结果

从脚本和运行结果我们可以得到以下结论:

  • 定义一个测试类时,要继承unittest.TestCase这个类
  • setUpClass()和tearDownClass()在测试类执行前后只会被执行一次
  • setUp()和tearDown()在测试类每个测试用例执行前后都会被执行一次
  • 测试用例必须以test开头,否则不会被执行。
  • 测试用例的执行顺序不是根据代码的先后顺序执行的,而是根据ASCII码的顺序执行的测试用例,ASCII码数字与字母的顺序为:0-9,A-Z,a-z。

执行流程大致如下

编写TestCase,由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,最后将运行的结果保存在TextTestResult中。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章