简介
本文简单介绍了pytest框架下的mark的使用及方法案例。
@pyest.mark.xxx
目的:实际工作中,我们写的自动化执行用例会比较多,多个py执行文件,多个class,很多方法,而我们只想运行当中部分的用例时怎么办?
1、打标位置:接口模块、类、方法及用例,运行用例时指定运行某个标签。
2、mark功能作用就是灵活的管理和运行指定测试用例
—————————————————————————————————————————
环境搭建
- pycharm-》设置-》编辑器-》插件,搜索 ini 下载这款插件
如果你的pycharm搜不到,请去官网下载:https://plugins.jetbrains.com/plugin/6981-ini/versions
- 1、查看你pycharm版本号
- 2、搜索对应你pycharm的对应年代对应运行版本下载到本地
- 3、 手动导入安装你的ini插件
- 4、 安装完毕,在pycharm项目下新建一个文档
pytest.ini
使用方法
1、配置标签
自定义的标签会被pytest识别不了,出现警告.PytestUnknownMarkWarning: Unknown pytest.mark.xxxx
[pytest]
addopts=-vsq
testpaths=./test_case
markers =
login: run the test_login test function for tasks project
p0: test1
p1: test2
p2: test3
标记注册好后,可以通过pytest --markers
来查看
配置项addopts:执行时可以省略一遍遍填写-v -s -q等参数,直接在mark配置好
.addopts=-vqs
-v
:pytest -v
说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等
-s
:pytest -s
说明:输入我们用例中的调式信息,比如print的打印信息等
-m
:pytest -m
”标记“ 说明:执行特定的测试用例。修改下上面的用例代码
-q
:pytest -q
说明:简化控制台的输出,可以看出输出信息和上面的结果都不一样, 下图中有两个…点代替了pass结果
-k
:pytest -k
“关键字” 说明:执行用例包含“关键字”的用例
–tb=style
:屏蔽测试用例执行输出的回溯信息,可以简化用例失败时的输出信息。style可以是 on,line,short,具体区别请自行体验。如使用pytest --tb=no
配置项testpaths:
testpaths
指示pytest去哪里访问。testpaths是一系列相对于根目录的路径,用于限定测试用例的搜索范围。只有在pytest未指定文件目录参数或测试用例标识符时,该选项才有作用
2、使用@pytest.mark.xxx
在类或方法或用例前加上:
@pytest.mark.标签名
样式:
import pytest
def inc(x):
return x + 1
@pytest.mark.p0
def test_request1():
assert inc(2) == 4
@pytest.mark.p1
def test_request2():
assert inc(1) == 2
@pytest.mark.p2
def test_input():
a = 1
b = a
c = a + b
assert inc(1) + c == 4
if __name__ == '__main__':
pytest.main(['test_abc.py', '-m', 'p0 or p1'])
执行结果:
3、跳过执行
pytest.mark.skip(xxx)
,某些接口或者方法由于某些原因需要跳过时使用。
import pytest
def inc(x):
return x + 1
@pytest.mark.p0 #打标P0
def test1():
assert inc(2) + 2 == 4
@pytest.mark.skip(reason='本次不执行') #打标跳过执行,并且写上原因
def test2():
assert inc(2) + 2 == 4
if __name__ == '__main__':
pytest.main(['test_abc.py', '-vs'])
执行结果:第二条跳过,并且表名理由。并且可以在报告中展示出来:
报告展示: