• unittest总结


    unittest

    Python内置的单元测试框架,跟pytest类似

    setup/teardown

    在用例执行之前执行setup 接着执行用例本身 最后,执行teardown

    setupclass/teardownclass

    在类中,所有用例执行之前执行setupclass 执行用例本身 当所有的用例执行完毕,再执行teardownclass

    verbosity

    0,静默模式,简单的输出结果 1,默认模式,添加每个用例执行的结果,通过是.,失败是F,报错是E 2,详细模式,详细的输出每个用例的执行结果

    断言

    assertEqual(a, b, msg) a == b 如果a不等于b,断言失败 assertNotEqual(a, b, msg) a != b 如果a等于b,断言失败 assertTrue(x, msg) bool(x) is True 如果表达式x不为True,断言失败 assertFalse(x, msg) bool(x) is False 如果表达式x不为False,断言失败 assertIs(a, b, msg) a is b 如果a is not 2,断言失败 3.1 assertIsNot(a, b, msg) a is not b 如果a is b,断言失败 3.1 assertIsNone(x, msg) x is not None 如果x不是None,断言失败 3.1 assertIn(a, b, msg) a in b 如果a not in b,断言失败 3.1 assertNotIn(a, b, msg) a not in b 如果a in b,断言失败 3.1 assertIsInstance(a, b, msg) isinstance(a, b) 如果a不是b类型,断言失败 3.2 assertNotIsInstance(a, b, msg) not isinstance(a, b) 如果a是b类型,断言失败 3.2

     import unittest
     import requests
     
     url = 'https://cnodejs.org/api/v1/topics'
     
     class TestCase2(unittest.TestCase):
     
         def setUp(self):
             response = requests.get(url)
             self.res = response.json()['success']
     
         def test_case_01(self):
     
             print(111111, self.res)
             # self.assertEqual(False, res, msg='预期值{} 与期望值{} 不相符'.format(False, res))
             self.assertTrue(self.res)
     
     
         def test_case_02(self):
             self.assertFalse(self.res)
     
     if __name__ == '__main__':
         unittest.main()

    TestSuite

    测试用例套件

    1. 自己实例化用力对象

    2. 使用TestTSuite创建容器

    3. 自己将用例对象添加到容器中

    4. 使用TextTestRunner执行器执行容器中的用例

    makeSuite

    1. 在创建容器时,该套件自动帮我们去指定的TestCaseClass类中获取以prefix开头的用例,返回一个容器对象

    2. 使用执行器执行该容器中的用例 #

     import unittest
     discover = unittest.TestLoader().discover(
         start_dir=base_dir,   # 该参必传
         pattern='test*.py',   # 保持默认即可。
         top_level_dir=None
        )
     unittest.TextTestRunner(verbosity=2).run(discover)

    该discover方法接收三个参数:

    • start_dir:要测试的模块名或者测试用例的目录。

    • pattern="test*.py":表示用例文件名的匹配原则,默认匹配以test开头的文件名,星号表示后续的多个字符。

    • top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,默认为None。

    注意!!!意!! discover对给定的目录是有要求的,它只识别Python的包,也就是目录内有init.py文件的才算是Python的包,只要是要读取的目录,都必须是包。 关于start_dir和top_level_dir的几种情况:

    • start_dir目录可以单独指定,这个时候,让top_level_dir保持默认(None)即可。

    • start_dir == top_level_dir, start_dir目录与top_level_dir目录一致,discover寻找start_dir指定目录内的符合规则的模块。

    • start_dir < top_level_dir,start_dir目录是top_level_dir目录的子目录。discover寻找start_dir指定目录内的符合规则的模块。

    • start_dir > top_level_dir,start_dir目录如果大于top_level_dir目录,等待你的是报错AssertionError: Path must be within the project。说你指定的路径(start_dir)必须位于项目内(top_level_dir)。

  • 相关阅读:
    OnboardSDK分析
    Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入
    TCP/IP四层模型和OSI七层模型的概念
    二分查找
    Combination Sum
    全面解析回溯法:算法框架与问题求解
    Search Insert Position
    过滤器
    Java中Web页面信息获取
    jQuery和Ajax联动
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12240939.html
Copyright © 2020-2023  润新知