Python unittest 之三: 测试套件

发表于:2021-9-28 09:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:知乎

  Assert系列方法
  我们来看测试方法里面的assert方法,测试需要要检查某个结果是否符合预期, 这个检查点 就是通过 TestCase方法的assert系列的函数实现的。
  我们来看看有哪些函数:
  稍微懂些英文,这些方法的意思一目了然,不需要多介绍了。大家可以根据测试的需求选用。
  套件
  通常我们执行测试用例的时候,如果只是要执行某个测试模块文件里面的所有测试用例,只需要python -m unittest testFile.py就可以了。
  打开ut/test2.py, 解释执行一下python -m unittest test2.py完成了 所有用例类里面 所有测试方法的执行。执行这个命令python -m unittest testFile.py看起来简单,其实框架帮我们完成了很多事情, 我们还不知道。
  我们现在大体了解一些基本的 步骤:
  一个TestCase的实例就是一个测试用例,TestSuite可以层层嵌套包含TestSuite和TestCase。这些都是代码中我们定义好的,我们自己可以实现,当然也明白。
  但是在执行的过程中,还涉及到几个模块,是底层偷偷创建的, 我们还没有看到一个是TestLoader,它是 用来加载TestCase和TestSuite的。
  我们定义的套件和套件里面的用例要能执行, 必须要通过TestLoader加载。
  无需我们自己创建TestLoader实例,unittest模块帮我们预先创建好了一个TestLoader的实例,内置在变量defaultTestLoader中,就是指向它,一个是TestRunner,它是来执行测试用例的,比如TextTestRunner
  测试的结果保存到TestResult实例中,比如TextTestResult,包括运行了多少测试用例,成功了多少,失败了多少等信息。
  示意图如下:
  我们执行这个命令python -m unittest test1.py,ut框架会自动用defaultTestLoader 加载该模块文件中的所有 用例类和里面的测试方法。然后创建一个TextTestRunner的实例, 并且执行defaultTestLoader加载的用例和套件。最后将结果保存在一个TextTestResult的实例中。
  多个模块文件
  上面我们说的执行测试,用例都是在一个模块文件中的。但是有的时候,我们要执行的测试用例,可能不止在一个模块文件中, 而是在多个模块文件里面。那么这些多个测试模块文件,我们又怎么一起去执行呢?
  执行某个目录下面所有的测试用例
  比如, 下图中,如果我们想执行目录 ut/mtf里面所有目录里面的测试用例。
  一种方法就是指定开始目录:
  python -m unittest discover -s D:/ut/mtf -v
  这样,就会递归的找到该目录下面能找到的所有的test开头的文件模块。里面的测试用例,并执行其里面的 所有测试类 的测试方法。
  挑选测试用例执行
  如果我们不需要这样执行其中所有的测试用例,而是想指定执行某些用例。我们可以创建一个test suite ,手动的添加我们要执行的用例。
  示例代码如下:
  import unittest
  import mtf.feature1.test_m1
  import mtf.feature2.test_m4
  # 使用 模块加载   函数
  lfm = unittest.defaultTestLoader.loadTestsFromModule
  # 使用 用例加载   函数,这些函数可以将 用例加载起来
  lftc = unittest.defaultTestLoader.loadTestsFromTestCase
  # 自己定义一个测试套件
  ts= unittest.TestSuite()
  #  加载模块里面所有的用例
  ts.addTest(lfm(mtf.feature1.test_m1))
  #  加载类里面的所有测试用例
  ts.addTest(lftc(mtf.feature2.test_m4.WidgetTestCase1))
  runner = unittest.TextTestRunner()
  runner.run(ts)

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号