默认情况下,pytest 会递归查找当前目录下所有以 test 开始或结尾的 Python 脚本,并执行文件内的所有以 test 开始或结束的函数和方法。
对于下面脚本执行:
def test_func1():
assert 1 == 1
def test_func2():
assert 1 != 1
会执行所有的
但是呢,在实际中呢,我们可以这个函数还没有写完整,或者我们只想调试这一个函数怎么办呢
标记测试函数
由于某种原因(如 test_func2 的功能尚未开发完成),我们只想执行指定的测试函数。在 pytest 中有几种方式可以解决:
第一种,显式指定函数名,通过 :: 标记。
pytest test_one.py::test_func1
执行结果:
第二种,使用模糊匹配,使用 -k 选项标识。
pytest -k func1 test_noe.py
结果如下
以上两种方法,第一种一次只能指定一个测试函数,当要进行批量测试时无能为力;第二种方法可以批量操作,但需要所有测试的函数名包含相同的模式,也不方便。
第三种,使用 pytest.mark 在函数上进行标记。
带标记的测试函数如
import pytest
@pytest.mark.finished
def test_func1():
assert 1 == 1
@pytest.mark.nofinished
def test_func2():
assert 1 != 1
测试时使用 -m 选择标记的测试函数:
pytest -m finished test_noe.py
执行结果
用 mark,我们可以给每个函数打上不同的标记,测试时指定就可以允许所有被标记的函数。
一个函数可以打多个标记;多个函数也可以打相同的标记。
运行测试时使用 -m 选项可以加上逻辑,如:
pytest -m "finished and commit"
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】。