• pytest---用例的执行顺序


    前言

      安静以前出去面试的时候遇到过这样一个问题:你怎么保证你的自动化用例的执行顺序。当时安静的回答是用例通过数字的形式进行标记,因为unittest执行是按照ascII码的顺序执行的。当时回答比较low。那我们看看如果用pytest怎么控制用例的执行顺序。

    pytest-ordering

    pytest-ordering属于pytest的一个插件,它可以控制pytest的执行顺序。

    安装:  pip install pytest-ordering 

    源码:https://github.com/ftobia/pytest-ordering

    pytest执行顺序

    pytest的执行顺序是根据代码编写的顺序进行执行的。

    import pytest
    
    class Test01():
        
        def test_02(self):
            print('
    ---用例02---')
    
        def test_01(self):
            print('
    ---用例01---')
        
        def test_03(self):
            print('
    ---用例03---')
    
    if __name__ == '__main__':
        pytest.main(['-vs'])

    通过下图可以看出来,我们执行的顺序是先执行了用例2,然后用例1,最后用例3,所以说pytest的执行顺序是默认编写的顺序来执行的。

    定制用例执行顺序

    如果在特定一些自动化中,想要定制用例的操作步骤来执行,这个时候就用到了上面介绍的插件pytest-ordering来执行,具体插件怎么用呢?

    这里还是需要前面介绍的mark的方法来执行。 @pytest.mark.run(order=X) x:表示执行顺序 

    import pytest
    
    class Test01():
    
        @pytest.mark.run(order=3)
        def test_02(self):
            print('
    ---用例02---')
    
        @pytest.mark.run(order=2)
        def test_01(self):
            print('
    ---用例01---')
    
        @pytest.mark.run(order=1)
        def test_03(self):
            print('
    ---用例03---')
    
    if __name__ == '__main__':
        pytest.main(['-vs'])

    通过下图可以看出来,用例已经按照我们的要求,先执行用例3,在执行用例1,最后执行用例2的方法来的

    这里需要注意的是,如果你在那个用例上面没有添加执行顺序要求的话,他会先执行带有标记的用例,然后根据未标记的用例顺序进行执行

    import pytest
    
    class Test01():
    
        def test_02(self):
            print('
    ---用例02---')
    
        @pytest.mark.run(order=2)
        def test_01(self):
            print('
    ---用例01---')
    
        @pytest.mark.run(order=1)
        def test_03(self):
            print('
    ---用例03---')
    
        def test_04(self):
            print('
    ---用例04---')
    
    
    if __name__ == '__main__':
        pytest.main(['-vs'])

    这里执行顺序:先执行用例3然后在是用例1,最后按照顺利顺序执行用例2和用例4。

    好了,pytest的用例执行顺序,就是这么简单,只要通过mark的方法进行标记就行了,但是千万不要忘记了需要安装插件

  • 相关阅读:
    文件传输-一个大文件传输
    日志模块-logging模块
    加密模块hashlib
    面向对象进阶-反射
    面向对象
    模块和包
    作业-学生管理系统
    Java 链表反转
    Haoop MapReduce 的Partition和reduce端的二次排序
    Hadoop 笔记1 (原理和HDFS分布式搭建)
  • 原文地址:https://www.cnblogs.com/qican/p/14187509.html
Copyright © 2020-2023  润新知