Pytest03-常用参数

本文详细介绍了pytest中的常用参数如-s,-v,-k,-q,-x,展示了如何通过这些参数控制测试输出、筛选特定测试、以及在失败时退出。通过实例代码演示了断言机制及其在测试中的应用。

Pytest03-常用参数

高清视频请去B站

“-s” 参数 用于关闭捕捉,从而输出打印信息到控制台
“-v” 参数 用于显示具体的用例执行信息‘
通过Pytest --help 查看帮助

1.运行名称中包含某字符串的测试用例
-k

2.简化输出信息
-q
3. 如果出现一条测试用例失败,则退出测试
-x
4. 指定目录以及特定类或方法执行

pytest.main(['-s','./doc/test_112233.py::TestDemo::test_case_03'])

练习代码如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 作者:扶摇
"""
    pytest的断言机制,用一句话概括借助python语言的
    运算符号和assert关键字来实现的
"""
import pytest

def test_fuyao_01():
    print("用例1")
    a = True
    b = False
    # 测试相等
    # assert 1 == 2
    # 测试不相等
    assert 1 != 2
    # 测试小于
    assert 1 < 2
    # 测试大于
    assert 1 > 2
    assert 'a' in 'abc'
    assert 'd' not in 'abc'
    assert a == True
    assert b == False
    assert b is not True

@pytest.mark.lever1
def test02():
    print("用例2")
    assert 1 == 2, "测试失败"

@pytest.mark.lever1
def test03():
    print("用例3")
    assert 1 == 1, "测试成功"

def test04():
    print("用例4")
    assert 1 == 1, "测试成功"
    

if __name__ == '__main__':
    # -s 输出打印信息到控制台
    # -v 用于显示具体的用例执行信息
    # pytest.main(['-v','-s','test_assert.py'])
    # pytest.main(['-k','fuyao','-v','-s','test_assert.py'])
    # pytest.main(['-q'])
    # 失败就退出
    # pytest.main(['-x','test_assert.py'])
    # pytest.main(['-sv','./doc/test_aabb.py::TestShopping::test03'])

测试技术交流请联系我
在这里插入图片描述
备注优快云扶摇

【学习软件测试/Python自动化测试技术/领取Python自动化测试学习路线图/简历优化】
视频链接:
课程服务介绍

自动化全栈学习路线图讲解

软件测试面试合集

Python编程刷题合集

Pytest入门到实战

Python接口自动化合集

PythonWeb自动化合集

性能测试合集

Jmeter接口自动化测试实战全集

2023GPT探索发现合集

加微信(备注优快云扶摇)即可免费领取下面的自动化测试资料和一份软件测试面试宝典
在这里插入图片描述
在这里插入图片描述

<think>我们正在讨论pytest框架中的pytest.main()函数,特别是关于-k参数的使用。根据引用内容,我们可以总结如下: 1. 引用[1]提到:当传入参数 -q 时,相当于命令行输入 pytest -q。这暗示了在pytest.main()中,我们可以通过传递包含命令行参数的列表来使用这些参数。 2. 引用[2]明确指出:pytest.main()的args参数可以传递一个列表对象,列表里面是多个命令行的参数。 3. 引用[3]的目录中提到了“匹配包含关键词的用例(匹配目录名、模块名、类名、用例名)”,这实际上就是-k参数的功能。 4. 引用[4]提到参数设置无效的问题,但这里我们关注的是-k参数的使用,所以这个问题暂时可以忽略。 因此,在pytest.main()中使用-k参数,我们需要在传递给pytest.main()的列表参数中包含'-k'和一个表达式字符串,用于选择匹配该表达式的测试用例。 具体使用方法: 在代码中,我们可以这样写: ```python pytest.main(["-k", "表达式"]) ``` 其中,表达式是一个字符串,用于指定匹配测试用例的规则。这个表达式可以匹配测试用例的名称(包括目录名、模块名、类名、用例名)。表达式支持基本的逻辑运算符,比如: - `and`:表示必须同时满足多个条件 - `or`:表示满足其中一个条件 - `not`:表示排除某个条件 例如: 1. 只运行名称包含"login"的测试用例: ```python pytest.main(["-k", "login"]) ``` 2. 运行名称包含"login"或者"logout"的测试用例: ```python pytest.main(["-k", "login or logout"]) ``` 3. 运行名称包含"user"但不包含"delete"的测试用例: ```python pytest.main(["-k", "user and not delete"]) ``` 注意:在列表中,我们将'-k'和后面的表达式作为两个独立的元素传递。 另外,引用[3]中详细说明了如何指定运行用例的多种方式,其中第6点就是关于-k参数的使用,即匹配包含关键词的用例。 所以,用户询问的pytest.main中-k参数的使用方法就是通过传递列表参数,其中包含'-k'和一个表达式字符串。 最后,根据要求,我们需要生成相关问题: §§相关问题§§ 1. pytest-k参数支持哪些表达式语法? 2. 如何在pytest中同时使用多个参数(例如-k和-v)? 3. 除了-k参数pytest还有哪些常用的选择测试用例的方式? 4. 在使用pytest.main()时,如何解决参数设置无效的问题?(参考引用[4]) </think>### pytest.main() 中 `-k` 参数的使用详解 `-k` 参数pytest 用于**按关键词过滤测试用例**的核心功能,它通过匹配测试用例的名称(包括目录名、模块名、类名、函数名)来选择性运行测试。在 `pytest.main()` 中的使用方法如下: ```python import pytest # 基本语法 pytest.main(["-k", "关键词表达式"]) # 关键词表达式需用引号包裹 ``` #### 具体使用示例: 1. **运行名称包含特定字符串的用例** ```python pytest.main(["-k", "login"]) # 运行所有名称含"login"的用例 ``` 2. **组合逻辑表达式**(支持 `and`/`or`/`not`) ```python pytest.main(["-k", "auth and not admin"]) # 运行含"auth"但不含"admin"的用例 ``` 3. **匹配复杂模式** ```python pytest.main(["-k", "TestUser or check_permission"]) # 匹配类名或函数名 ``` #### 关键特性: - **匹配范围**:覆盖测试目录名、模块文件名、测试类名、测试函数名 [^3] - **大小写敏感**:默认区分大小写(可通过插件调整) - **表达式灵活性**: ```python pytest.main(["-k", "add_ and (cart or payment)"]) # 组合逻辑 ``` #### 与其他参数联用: ```python # 联合使用 -k 和 -v(详细输出) pytest.main(["-k", "checkout", "-v"]) # 联合使用 -k 和 -x(遇错即停) pytest.main(["-k", "critical", "-x"]) ``` > ⚠️ **参数无效问题**:若发现 `-k` 未生效,请检查 IDE 设置(如 PyCharm 需将 `Default test runner` 改为 `Unittests` 而非 Pytest)[^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试老宅男扶摇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值