Python 自动化测试框架unittest与pytest的区别(1)

发表于:2022-2-18 09:08

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

 作者:佚名    来源:CSDN

  Unittest vs Pytest
  主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面比较unittest和pytest的区别:
  用例编写规则

  用例前置与后置条件
   
  断言
   
  测试报告

  失败重跑机制

  参数化

  用例分类执行
   
  如果不好看,可以看下面表格:
  总体来说,unittest用例格式复杂,兼容性无,插件少,二次开发方便。pytest更加方便快捷,用例格式简单,可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如flask插件,可用于用例出错重跑,还有xdist插件,可用于设备并行执行,效率更高。
  实例演示
  讲了七大区别,总要演示一下具体实例,用事实说话。
  前后置区别
  这里抽用例前置与后置的区别来讲,先看unittest的前后置使用:
  import unittest
  class TestFixtures01(unittest.TestCase):
      # 所有用例执行前执行
      def setUp(self) -> None:
          print("setUp开始")
      def tearDown(self) -> None:
          print("tearDown结束")
      # 每条用例执行前执行
      @classmethod
      def setUpClass(cls) -> None:
          print("setUpClass开始")
      @classmethod
      def tearDownClass(cls) -> None:
          print("tearDownClass结束")
      # 测试用例
      def test_001(self):
          print("测试用例001")
  class TestFixtures02(unittest.TestCase):
      def test_002(self):
          print("测试类2")
  # 每个模块执行前执行
  def setUpModule():
      """
      在所有测试类在调用之前会被执行一次,函数名是固定写法,会被unittest框架自动识别
      """
      print('集成测试 >>>>>>>>>>>>>>开始')
  def tearDownModule():
      print("集成测试 >>>>>>>>>>>>>>结束")
  if __name__ == '__main__':
      unittest.main()

  运行结果:
  从结果上得知, 三个方法的逻辑优先级: setUp()&tearDown() < setUpClass()&tearDownClass() < setUpModule()&tearDownModule()
   
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号