Python 的 unittest

Posted

tags:

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

请问 python 的 unittest (PyUnit) 里有没有类似Java 的 unittest (JUnit) 里面的@before, @after的功能啊?

楼主在用 PyUnit 做测试,测试的时候使用的一些方法更改了一个建好了的数据库;楼主妄想在测试结束之后小python能自动撤销之前自己对数据库的修改。请大神指点!

ps 目前楼主手动修改数据库还原其本来面貌,但是这个做法实在很傻。

参考技术A 是需要重载setup 和teardown与before,after的用法一致。
setup建立数据环境
teardown清理自己留下的垃圾尾巴。

通常我们在setup里将数据库删除重新建立,
teardown里把整个儿库再删除。
参考技术B 你说的是setup()和teardown()?
http://docs.python.org/2/library/unittest.html追问

是的!但是如果我想删除unit test往数据库里添加的数据,需要重新定义setup()和teardown()么?

追答

没试过写数据库,不过按常理来说肯定要的啊。

本回答被提问者采纳

python单元测试之unittest

 

什么是单元测试?
单元测试负责最小的软件测试单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序分支进行测试以发现模块中的错误。

python拥有诸多单元测试框架,如doctest、unittest、pytest、nose等,其中最常用就是python自带的unittest框架(也被称为PyUnit框架),Python2.1及其以后的版本已将unittest作为标准模块放入python开发中。

基本框架代码如下

技术图片
import unittest
 
class Test(unittest.TestCase):
 
    def setUp(self):
        print(‘hello‘)
 
    def tearDown(self):
        print(‘bye‘)
 
    def test_001(self):
        print(‘001‘)
 
    def test_002(self):
        print(‘002‘)
 
    def test_003(self):
        print(‘003‘)
 
    def func(self):
        print(‘func‘)
 
if __name__ == ‘__main__‘:
    unittest.main()
技术图片

1.引入unittest模块,创建一个类A继承unittest的TestCase类,我们可以将A类看成是对待特定类的测试的集合
2.setup() 方法用于测试用例执行前的初始化工作
3.teardown() 方法用于测试用例执行之后的善后工作
4.unittest提供了全局main()方法,使用它可以方便地将一个单元测试模块变成可以直接运行的测试脚本
5.main()方法使用TestLoader类来搜索所有包含在模块以”test”命名开头的测试方法,并自动执行它们

四个基本概念
1.Test Fixture
测试用例环境的搭建和销毁,就是一个fixture,通过setUp()方法来实现数据的初始化建立以及环境准备,通过tearDown()方法清除数据结束测试。

2.TestCase
一个TestCase的实例就是一个测试用例,测试用例就是一个完整的测试流程,包括测试前的准备环境搭建,包括测试前的准备环境搭建(setUp)、实现测试过程的代码(run),以及测试以后环境的还原(tearDown)。


3.Test Suite

一个功能的验证是需要多个测试用例,可把多个测试用例集合起来执行,这就产生了测试套件TestSuite的概念,Test Suite用来组装单个测试用例,可以通过addTest加载TestCase到TestSuite中,从而返回一个TestSuite实例


4.Test Runner
在unittest单元测试框架中,通过TestTextRunner类提供的run()方法来执行测试用例。

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

unittests相关内容

一文搞懂Python Unittest测试方法执行顺序

Python测试框架之unittest和pytest 的区别

搭建自动化测试框架Python3+Selenium

自动化测试框架总结

自动化测试框架总结