04-13pytest的基本使用方法
引言
1 我们有100个case的时候,有时候需要执行其中的20个,有时间需要执行其中的30个。
在pytest中有什么好的办法呢?
有人说我用LoadTestCase(),指定类加载
有人说,我用跳过,unittest.skip()
有人说我重写一个suite函数,再准备几个场景的用例组合
还有没有其他更方便的办法?
正文:
代码文件
./conftest.py
def pytest_configure(config):
marker_list = ["isneed","isnotneed","testmark3"] # 标签名集合
for markers in marker_list:
config.addinivalue_line(
"markers", markers
)
./test_markers.py
import pytest
@pytest.mark.isneed
def test_case1():
print(__name__)
assert True ,"makers OK "
@pytest.mark.isnotneed
def test_case2():
print(__name__)
assert True,"maekrs Not Ok"
运行结果如下:
(testops) >pytest test_markers.py -q -v -m isneed -s
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.7.1, pytest-5.2.2, py-1.8.0, pluggy-0.13.0
rootdir: D:\Coding\Project\testops\Stage5\07pytest\marker
plugins: html-2.0.0, metadata-1.8.0
collected 2 items / 1 deselected / 1 selected
test_markers.py::test_case1 marker.test_markers
PASSED
=================================================================== 1 passed, 1 deselected in 0.01s ====================================================================
从运行结果来看,我们只运行了test_case1,还有要给test_case2没有运行,这说明marker的筛选机制起作用了。
另外在conftest.py需要提前进行marker的声明。config.addinivalue_line 就是在执行这个声明的操作。
总结:
1 marker是pytest里面的测试用例筛选工具
2 多个标签的声明使用conftest.py 在其中进行config.addinivalue_line。
思考与延伸
1 标记改造和迭代怎么使用?
2 是不是可以给那些不确定是否要执行的case加上标签,以后不需要执行的时候就带上标签。