pytest-类中测试方法、多文件批量执行

pytest-类中测试方法、多文件批量执行,完整、可直接复制运行的写法,覆盖:

  1. 测试类 + 类中方法执行
  2. 多文件批量执行
  3. 按标记(@pytest.mark)执行
  4. 常用组合用法

1. 测试类 + 类中方法在 main 中执行

完整代码

python

运行

复制代码
import pytest

# 测试类(必须 Test 开头)
class TestDemo:
    def test_case1(self):
        assert 1 + 1 == 2

    def test_case2(self):
        assert "pytest" in "hello pytest"

# 独立函数
def test_func1():
    assert True

if __name__ == '__main__':
    # 1. 执行当前文件所有用例(类+函数)
    pytest.main([__file__, "-v", "-s"])

    # 2. 只执行某个类
    # pytest.main([__file__ + "::TestDemo", "-v"])

    # 3. 只执行某个类里的某个方法
    # pytest.main([__file__ + "::TestDemo::test_case1", "-v"])

执行路径规则

plaintext

复制代码
文件.py::类名::方法名

2. 多文件批量执行

假设项目结构:

plaintext

复制代码
tests/
├── test_login.py
├── test_order.py
└── test_pay.py
main.py

main.py 中批量执行

python

运行

复制代码
import pytest

if __name__ == '__main__':
    # 1. 执行 tests 目录下所有测试
    pytest.main(["./tests", "-v", "-s"])

    # 2. 执行指定多个文件
    # pytest.main(["./tests/test_login.py", "./tests/test_order.py", "-v"])

    # 3. 只执行某个文件中的某个用例
    # pytest.main(["./tests/test_login.py::TestLogin::test_login_success", "-v"])

3. 按标记 @pytest.mark 执行(常用)

给用例打标记,例如 smokeapiui

示例代码

python

运行

复制代码
import pytest

@pytest.mark.smoke
def test_smoke1():
    assert True

@pytest.mark.smoke
def test_smoke2():
    assert True

@pytest.mark.api
def test_api1():
    assert True

if __name__ == '__main__':
    # 只执行标记为 smoke 的用例
    pytest.main([__file__, "-m", "smoke", "-v"])

    # 执行 smoke 或 api
    # pytest.main([__file__, "-m", "smoke or api", "-v"])

    # 执行非 api
    # pytest.main([__file__, "-m", "not api", "-v"])

4. 最常用完整 main 模板(直接拿去用)

python

运行

复制代码
import pytest

if __name__ == '__main__':
    pytest.main([
        "./tests",       # 测试目录
        "-v",            # 详细
        "-s",            # 显示 print
        "-x",            # 失败即停止
        "--html=report.html",  # 报告
        "--alluredir=./allure-results"
    ])

5. 常用执行语法汇总

表格

场景 写法
当前文件所有用例 pytest.main([__file__])
某个测试类 文件::TestClass
类中某个方法 文件::TestClass::test_func
某个函数 文件::test_func
执行目录 ["./tests"]
按标记执行 -m smoke
相关推荐
Mininglamp_271814 小时前
Claude Code 封禁中国开发者之后:本地 AI 编程工具的替代方案实测
开发语言·人工智能·windows·开源软件·ai-native
思麟呀14 小时前
C++17(三)if constexpr+折叠表达式
开发语言·c++
醉城夜风~14 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
明理的信封14 小时前
AI 基础设施的“去 Python 化“:Rust 与 C# 的两条替代路径
人工智能·python·rust
qydz1114 小时前
杰理开发基础知识(3)
开发语言·嵌入式开发·杰理科技
贾斯汀frank14 小时前
C# 15 类型系统改进:Union Types
开发语言·windows·c#
阿里嘎多学长14 小时前
2026-07-10 GitHub 热点项目精选
开发语言·程序员·github·代码托管
CHHH_HHH15 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11
麻雀飞吧15 小时前
2026年AI量化开发,先跑通小流程再加复杂功能
人工智能·python
daphne odera�16 小时前
PyCharm 中 Codex 插件启动失败:unknown variant default 的解决方法
python·chatgpt·pycharm