前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python的unittest模块

python的unittest模块

作者头像
狼啸风云
修改2022-09-03 20:58:13
6320
修改2022-09-03 20:58:13
举报

unittest 原名为 PyUnit,是由 java 的 JUnit 衍生而来

unittest库提供了test cases, test suites, test fixtures,test runner。

  • test cases 通过继承TestCase类,创建一个test或者多个test
  • test suites 测试套件,相当于test的容器
  • test fixtures 通常为setup + test case + teardown结构
  • test runner 执行测试用例tests或suit,可以指定执行方式

整体结构

待测试的类:

代码语言:javascript
复制
class Count:

def __init__(self,a,b):

self.a = a

self.b = b

def add(self):

return self.a+self.b

示例1:

代码语言:javascript
复制
import unittest

class TestDemo(unittest.TestCase):


   def setUp(self):

       print("setUp")


   def test_add(self):

       z = Count(2,3)

       self.assertEqual(z.add(),5)


   def test_invid_add(self):

       z = Count(2, 3)
 
       self.assertNotEqual(z.add(),6)


   def tearDown(self):

       print("tearDown")


if __name__=="__main__":

   suit=unittest.TestSuite()#在pycharm中,手动修改以一般python文件方式去运行

   suit.addTest(TestDemo("test_invid_add"))

   suit.addTest(TestDemo("test_add"))

   runner=unittest.TextTestRunner()

   runner.run(suit)

   # unittest.main() #默认按照字母和数字顺序执行,等同于unittest.makeSuite(test)

示例2:

代码语言:javascript
复制
import unittest

lass TestDemo(unittest.TestCase):

    @classmethod

    def setUpClass(cls):

      print("setUpClass")


    def test_add(self):

      print("test_add")

      z = Count(2,3)

      self.assertEqual(z.add(),5)


    def test_invid_add(self):

      print("test_invid_add")

      z = Count(2, 3)

      self.assertNotEqual(z.add(),6)


    @classmethod

    def tearDownClass(cls):

       print("tearDownClass")



if __name__=="__main__":

   suit=unittest.TestSuite()

   suit.addTest(TestDemo("test_time"))

   suit.addTest(TestDemo("test_add"))

   suit.addTest(TestDemo("test_invid_add"))

   runner=unittest.TextTestRunner()

   runner.run(suit)

从以上2个示例可知道:

  • unittest默认是按照字母和数字的顺序运行,倘若需要按照我们指定的顺序执行,可使用 suit.addTest()的方式去指定
  • setUp()、tearDown()会在每个测试用例(test开头)之前和之后执行
  • setUpClass(cls)、tearDownClass(cls)仅在用例之前和之后各执行1次,与上述的setUp()、tearDown()不同
  • 使用pycharm IDE运行unittest文件,不管是默认的用例执行顺序,还是指定的用例执行顺序,用例执行结果均为默认的顺序,即按照字母和数字的顺序执行。这算是pycharm的一个小小bug,具体做法:进入运行配置界面,在Python 下手动创建指定执行的py文件,而不是Python tests下
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档