51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 639|回复: 0
打印 上一主题 下一主题

[资料] 更改测试用例执行顺序的几种自动化方法

[复制链接]
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-5-29 09:55:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前言
      在自动化测试中,自动化测试用例设计原则就是执行过程时不能存在依赖顺序,那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?目前单元测试框架中unittest没有办法改变测试用例的执行顺序,但是另一个单元测试框架pytest可以做到,辅助测试人员更改测试用例的执行顺序,今天小编简单的介绍几种,如何通过pytest进行更改自动化测试用例的执行顺序
      pytest
      pytest的执行顺序想必大家都清楚,是通过ascii码进行收集的,然后通过文件中从上往下的执行顺序进行运行,我们只需要将我们的测试用例在编写时,按照从上往下的顺序进行编写。
      # coding:utf-8
      import pytest
      def test_a():
          print('测试用例01')
      def test_b():
          print('测试用例02')
      def test_c():
          print('测试用例03')


      通过运行后发现,顺序是按照从上往下的顺序依次执行。

      pytest-ordering
      pytest-ordering属于pytest的一个插件,其目的就是帮助我们控制自动化测试用例的执行顺序,而且使用起来也比较简单。
      安装:pip install pytest-ordering
      使用方法
      使用方法比较简单,我们只需要在编写好的测试用例前加上一个装饰器,然后通过改变装饰器传入的参数进行控制其用例执行的顺序。小编这里拿到上方的用例,我们将从下往上的执行。
      # coding:utf-8
      import pytest
      @pytest.mark.run(order=3)
      def test_a():
          print('测试用例01')

      @pytest.mark.run(order=2)
      def test_b():
          print('测试用例02')

      @pytest.mark.run(order=1)
      def test_c():
          print('测试用例03')


      通过执行测试用例会很清楚的看到,我们已经将测试用例的执行顺序改变了。

      pytest_collection_modifyitems
      pytest_collection_modifyitems属于pytest的钩子函数,这个函数可以收集我们的测试用例,收集完成后可以对其进行一些修改和排序功能,下面小编简单的介绍该使用方法。
      使用方法
      首先需要将pytest_collection_modifyitems这个函数放入到conftest.py文件中,然后对其进行二次开发,这里小编通过倒叙的形似修改了收集到的测试用例,从而改变测试用例的执行顺序。
      # conftest.py
      # coding:utf-8
      def pytest_collection_modifyitems(session, items):
          print("收集到的测试用例:%s"%items)
          # 修改执行顺序
          items.reverse()
          for i in items:
              print('收集到测试用例名称:%s' %i.name)


      编写3个简答的测试用例,通过命令行的方式进行运行,并且会发现也将我们的测试用例顺序改变和收集到了我们的测试用例相关信息。
      # coding:utf-8
      import pytest
      def test_a():
          print('测试用例01')
      def test_b():
          print('测试用例02')
      def test_c():
          print('测试用例03')



      总结
      小编通过简单的案例介绍了如何在pytest中改变测试用例的执行顺序,当然上述方法并不是唯一的方法,只是提供一个简单的思路,小编还是希望大家编写测试用例时注意不要互相依赖,这样的话执行顺序就可以随机执行,保证我们的测试用例不受其他用例的干扰而成功执行。感谢您的阅读,希望本篇文章对您有所帮助。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 07:59 , Processed in 0.069931 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表