写点什么

python 小知识 - 单元测试

作者:AIWeker
  • 2022-11-14
    福建
  • 本文字数:1057 字

    阅读完需:约 3 分钟

python小知识-单元测试

1.单元测试的重要性

测试是为了保证交互高质量代码,而单元测试就是其中一个基石。

当你雄心勃勃的写一个大工程的时候,请在你的 checklist 里写下三个词语:功能函数化,模块化,单元测试。同时建立一个模块或者文件叫 test,所有的单元测试可以放在这里

2.单元测试的原则

单元测试时伴随在开发过程的自我测试,开发完一个函数,单元测试一下;开发完模块,单元测试一下;所以当你写完你的任务时,交给测试人员测试的时候,你心里是充满自信的

如果你等完成了所有的开发,再来测试,要么来不及测试,要么测一个大概的流程,结果是测试人员无休止的找你。

单元测试原则:

  • 一致性:每次执行的单元测试的结果都是一样的

  • 原子性:单元测试的结果要么成功,要么失败

  • 单一原则:针对单一场景和行为进行测试,多个分支建立多个场景进行单独测试

  • 隔离性:不依赖外部环境,如数据库

3.python 如何写单元测试

python 内置了一个单元测试模块unittest,我们来看下使用例子

class Func(object):    def add(self,a,b):        return a+b    def sub(self,a,b):        return a-b
import unittestclass FuncTest(unittest.TestCase): def setUp(self): print("running set up") self.func = Func() def tearDown(self): print("running teardown") self.func = None def testAdd(self): self.assertEqual(self.func.add(-1,7), 6) def testSub(self): self.assertEqual(self.func.sub(10,2), 8)
# add testsuite = unittest.TestSuite()suite.addTest(FuncTest("testAdd"))suite.addTest(FuncTest("testSub"))
# run testrunner = unittest.TextTestRunner()runner.run(suite)
# ..# running set up# running teardown# running set up# running teardown
# ----------------------------------------------------------------------# Ran 2 tests in 0.003s
# OK# <unittest.runner.TextTestResult run=2 errors=0 failures=0>
复制代码

上面的例子,我们要测试类的 Func 的功能函数,FuncTest为一个测试案例(unittest.TestCase),每个测试案例都有 setUp 和 tearDown 来初始化和回收资源,并为需要测试的功能编程 Test,具体为:

  • setUp tearDown 分别是初始化和回收资源

  • 测试方法通常以 test 开头

  • func.add(-1,7)为测试对象输出,6 为预期输出,assertEqual 为判断是否符合预期(是否相等)

  • 将测试 case 加入 TestSuite

  • 利用 TextTestRunner 执行 case

当然,你可以不需要 unittest 这个包,但请你创建 test 文件夹,创建 testXXX.py 来测试你的功能。

发布于: 刚刚阅读数: 4
用户头像

AIWeker

关注

InfoQ签约作者 / 公众号:人工智能微客 2019-11-21 加入

人工智能微客(aiweker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
python小知识-单元测试_Python_AIWeker_InfoQ写作社区