python pytest mark

默认情况下pytest会测试所有的函数,但是有些时候我们只想测试指定的函数,这就需要用到mark

1
2
3
@pytest.mark.finished
@pytest.mark.unfinished
@pytest.mark.skip 跳过
1
2
3
4
5
6
7
8
import pytest
@pytest.mark.finished
def test1_fun():
    assert 1 == 1

@pytest.mark.unfinished
def test2_fun():
    assert 1 == 1

默认两个方法都测试

1
2
3
4
5
6
7
8
9
PS D:\code\test> pytest test.py
platform win32 -- Python 3.6.5, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: D:\code\test, inifile:
plugins: remotedata-0.2.1, openfiles-0.3.0, doctestplus-0.1.3, arraydiff-0.2
collected 2 items

test.py ..                                                               [100%]

========================== 2 passed in 0.04 seconds ===========================

只测试finished

1
2
3
4
5
6
7
8
9
10
PS D:\code\test> pytest -m finished test.py
============================= test session starts =============================
platform win32 -- Python 3.6.5, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: D:\code\test, inifile:
plugins: remotedata-0.2.1, openfiles-0.3.0, doctestplus-0.1.3, arraydiff-0.2
collected 2 items / 1 deselected

test.py .                                                                [100%]

=================== 1 passed, 1 deselected in 0.05 seconds ====================

只测试unfinished

1
2
3
4
5
6
7
8
9
10
PS D:\code\test> pytest -m finished test.py
============================= test session starts =============================
platform win32 -- Python 3.6.5, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: D:\code\test, inifile:
plugins: remotedata-0.2.1, openfiles-0.3.0, doctestplus-0.1.3, arraydiff-0.2
collected 2 items / 1 deselected

test.py .                                                                [100%]

=================== 1 passed, 1 deselected in 0.05 seconds ====================

skip

直接跳过

1
2
3
4
@pytest.mark.skipif(conn.__version__ < '0.2.0',
                    reason='not supported until v0.2.0')
def test_api():
    pass
1
python test.py

https://learning-pytest.readthedocs.io/zh/latest/doc/test-function/skip.html