加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python 单元测试- unittest

发布时间:2020-12-17 17:00:20 所属栏目:Python 来源:网络整理
导读:unittest介绍 unittest是python标准库里用于单元测试的模块。单元测试用来对最小可测试单元进行正确性检验。 单元测试好处: 确保代码质量 改善代码设计,难以测试的代码一般是设计不够简洁的代码。 保证重构不会引入新问题,以函数为单位进行重构的时候,只

unittest介绍

unittest是python标准库里用于单元测试的模块。单元测试用来对最小可测试单元进行正确性检验。

单元测试好处:

  • 确保代码质量

  • 改善代码设计,难以测试的代码一般是设计不够简洁的代码。

  • 保证重构不会引入新问题,以函数为单位进行重构的时候,只需要重新跑测试就基本可以保证重构没引入新问题。

unittest基础概念:

test fixture

TestCase?表示测试用例,一个测试用例可以包含多个测试方法,每个方法都要以test_开头.测试方法中用到的self.assertXXX的方法是读研语句,单元测试都是使用这样的断言语句判断测试是否通过:如果断言为False,会跑出AssertionError异常。不以test开头的方法不被认为是测试方法,测试的时候不会执行

TestSuit?测试套件,它将一组测试用例作为一个测试对象

test runner

单元测试样例:

编写一个类

class?A():
????def?__init__(self,?n):
????????self.n?=?n

????def?add(self,?number):
????????self.n?+=?number

????def?reduce(self,?number):
????????self.n?-=?number

单元测试myTest.py

import?unittest


class?MyTest(unittest.TestCase):
????def?setUp(self):
????#?每个测试用例执行之前做操作
????????print?u'开始初始化'
????????self.a?=?A(10)
????????
????def?tearDown(self):
????#?每个测试用例执行之后做操作
????????print?u'结束'

????def?test_add(self):
????????self.a.add(10)
????????print?'test_add---->',?self.a.n

????????self.assertIsInstance(self.a.n,?int)
????????self.assertEqual(self.a.n,?20)

????def?test_reduce(self):
????????self.a.reduce(10)
????????print?'test_reduce---->',?0)




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

测试结果:


>>>?python2?myTest.py
开始初始化
test_add---->?20
F结束
开始初始化
test_reduce---->?0
结束
.

setUp()和tearDown()

setUp() 列出测试前的准备工作,常用来做一些初始化,非必需方法。

tearDown()方法列出了测试完成后的收尾工作,用来销毁测试过程中产生的影响,非必需方法。


mock?伪造函数、对象、类的返回值

用于单元测试时,伪造函数返回值。

import?tool
from?unittest?import?mock

response=[['小明',80]]

tool.query_student=mock.Mock(return_value=response)

print(tool.query_student(1))
#?['小明',80]


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读