pytest---用例的执行顺序

pytest---用例的执行顺序

前言

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

pytest-ordering

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

安装pip install pytest-ordering

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

pytest执行顺序

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

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

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

定制用例执行顺序

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

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

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

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

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

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

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

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

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部