好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Pytest(7)自定义用例顺序pytest-ordering

前言

测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果. 有些同学在写用例的时候,用例写了先后顺序, 有先后顺序后,后面还会有新的问题(如:上个用例返回数据作为下个用例传参,等等一系列的问题。。。) github 上有个 pytest-ordering 插件可以控制用例的执行顺序,github插件地址https://github测试数据/ftobia/pytest-ordering ?

安装依赖包

pip3?install?pytest-ordering

?

小例子

先看pytest默认的执行顺序,是按 test_ording.py 文件写的用例先后顺序执行的

import?pytest


def?test_1():
????print("用例1")
????assert?True


def?test_2():
????print("用例2")
????assert?True


def?test_3():
????print("用例3")
????assert?True

运行结果

collecting?...?collected?3?items

test_1.py::test_1?PASSED?????????????????????????????????????????????????[?33%]用例1

test_1.py::test_2?PASSED?????????????????????????????????????????????????[?66%]用例2

test_1.py::test_3?PASSED?????????????????????????????????????????????????[100%]用例3


==============================?3?passed?in?0.02s?===============================

?

使用 pytest-ordering 插件后改变测试用例顺序

import?pytest


@pytest.mark.run(order=3)
def?test_1():
????print("用例1")
????assert?True


@pytest.mark.run(order=1)
def?test_2():
????print("用例2")
????assert?True


@pytest.mark.run(order=2)
def?test_3():
????print("用例3")
????assert?True

运行结果

collecting?...?collected?3?items

test_1.py::test_2?PASSED?????????????????????????????????????????????????[?33%]用例2

test_1.py::test_3?PASSED?????????????????????????????????????????????????[?66%]用例3

test_1.py::test_1?PASSED?????????????????????????????????????????????????[100%]用例1


==============================?3?passed?in?0.02s?===============================

这样就是按指定的顺序执行的用例

查看更多关于Pytest(7)自定义用例顺序pytest-ordering的详细内容...

  阅读:31次