zoukankan      html  css  js  c++  java
  • python每日一练之单元测试

    官方文档地址:https://docs.python.org/zh-cn/3.7/library/unittest.html#class-and-module-fixtures

    一、关于一些基本概念

    Test fixture 官方文档把这个词翻译成“测试脚手架”,个人理解,是启动测试前的准备工作,根据使用API的不同,实现在每个用例执行前/后、类执行前/后、模块启动前/后的动作。

    测试用例 检查特定输入的数据时的响应。

    Test suite测试套件 用例执行的顺序

    Test runner 执行和输出测试结果的组件

    二、实例

    TestEx继承测试基类TestCase,test告诉测试运行者这个方法表示测试。不符合此命名规则的方法,执行测试时不会运行。__init__方法会执行三次,并且都是在测试用例执行前。

    三、命令行执行

    后面再补充

    四、test fixture

    用例执行前/后需要执行的指令。

    1.setUp()

    每个用例执行前都会执行,如果此方法有问题,将会被测试框架视为这个测试失败,用例方法和tearDown不会被执行。如果setUp成功运行,不管用例方法结果如何,tearDown()都会被执行。

    2.tearDown()

    用例执行结束后运行。

    3.setUpClass()

    当测试套件遇到来自新类的测试时,将调用前一个类的tearDownClass()(如果有),然后调用这个新类的setupClass()。

    如果在setUpClass期间引发异常,则不会运行该类中的测试,也不会运行tearDownClass。跳过的类将不会运行setUpClass或tearDownClass。如果该异常是SkipTest异常,则该类将被报告为已跳过而不是错误。

    4.tearDownClass()

    运行完所有测试后

         下面例子没有执行setUpClass(),为啥

    5.setupModules()

    与前面类似,不过这里指的是模块。如果setUpModule中引发了异常,则模块中的任何测试都不会运行,而tearDownModule也不会运行。如果该异常是SkipTest异常,则该模块将被报告为已跳过而不是错误。

    6.tearDownModules

    运行完所有的测试后

    五、装饰器

    1.无条件跳过@unittest.skip(reason) 无条件跳过用例或者测试类,并输出原因

    2.@unittest.skipIf(condition, reason) condition为真时跳过,输出原因

    2.@unittest.skipUnless(condition, reason) condition为假时跳过,输出原因

    3.@unittest.expectedFailure 把测试标记为失败,如果测试不通过,会被认为测试成功,反之失败。

    4.exception unittest.skipTest(reason) 引发此异常以跳过一个测试。存疑~

    六、test suit

    1.test_suit.addTest()实现执行顺序

    test_suit=unittest.TestSuit()

    tests=[TestClass(‘testcase1),...]

    test_suit.addTests(tests) # 添加case列表,或者addTest(TestClass(‘testcase1))逐个添加。非test开头的方法也可添加进来作为测试用例使用。

    runner=unittest.TextTestRunner()

    runner.run(test_suit)

    2.unittest.TestLoader() 暂未展开

    suit.addTests(unittest.TestLoader().loadTestsFromCase(TestClass)) 加载testCase,测试方法按照test_后面的字母顺序执行

    七、HTMLReport

    # 测试套件

    suite = unittest.TestSuite()

    # 测试用例加载器

    loader = unittest.TestLoader()

    # 把测试用例加载到测试套件中

    suite.addTests(loader.loadTestsFromTestCase(TestStringMethods))

    # 测试用例执行器

    runner = HTMLReport.TestRunner(report_file_name='test',  # 报告文件名,如果未赋值,将采用“test+时间戳”

                                   output_path='report',  # 保存文件夹名,默认“report”

                                   title='测试报告',  # 报告标题,默认“测试报告”

                                   description='无测试描述',  # 报告描述,默认“测试描述”

                                   thread_count=1,  # 并发线程数量(无序执行测试),默认数量 1

                                   thread_start_wait=3,  # 各线程启动延迟,默认 0 s

                                   sequential_execution=False,  # 是否按照套件添加(addTests)顺序执行,

                                   # 会等待一个addTests执行完成,再执行下一个,默认 False

                                   # 如果用例中存在 tearDownClass ,建议设置为True,

                                   # 否则 tearDownClass 将会在所有用例线程执行完后才会执行。

                                   # lang='en'

                                   lang='cn'  # 支持中文与英文,默认中文

                                   )

    # 执行测试用例套件

    runner.run(suite)

    八、常用API

    未完待续

  • 相关阅读:
    关于Spring和Struts2的整合
    有关Transaction not successfully started问题解决办法
    两种页面跳转
    jdbc连接mysql
    change和modify
    Navicat Premium 15连接Oracle时提示oracle library is not loaded的解决方案
    Oracle创建本地数据库实例及配置监听
    下载Visual Studio 2019离线安装包
    简单的数据库
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
  • 原文地址:https://www.cnblogs.com/Cc905/p/13033200.html
Copyright © 2011-2022 走看看