pytest -k: 更快更方便的测试用例选择

一、pytest概述

pytest 是一个流行的 Python 测试框架,其具有易于使用,简化测试编写和扩展性强的优点。pytest 使用了 Python 自带的 assert 语句,帮助开发者编写简单的测试用例,同时它还提供了众多的插件,可以扩展 pytest 的功能。

二、测试用例选择

测试执行速度是一个很重要的问题,特别是当测试用例数量很多的时候。然而,测试用例选择很可能成为性能瓶颈,因为所有未被选择的测试用例仍需调用 setUp 和 tearDown 方法。pytest -k 选项提供了一个简便快捷的方式,可以按照名称对基础测试用例进行选择。

三、pytest -k 用法

pytest -k 选项可以按照测试用例名称对测试套件进行选择。具体来说,这个选项可以通过以下方式来使用:

pytest -k "expression"

其中,”expression” 是可以通过 Python 语言进行编写的字符串,它可以包含 Python 运算符和函数的调用,且对大小写敏感。pytest -k 选项会匹配用例名称中的 “expression” 子串,从而执行与匹配项相关的测试用例。

例如,如果我们有以下测试用例:

def test_add():
    assert 1+1 == 2
    
def test_subtract():
    assert 2-1 == 1
    
def test_divide():
    assert 4/2 == 2

可以通过以下命令行语句来执行单元测试:

pytest -v test_sample.py

结果如下:

test_sample.py::test_add PASSED
test_sample.py::test_subtract PASSED
test_sample.py::test_divide PASSED

如果我们只想运行包含 add 的测试用例,在命令行中使用 -k 参数:

pytest -v -k "add" test_sample.py

结果如下:

test_sample.py::test_add PASSED

通过这种方式,我们可以迅速、有效的选择和执行特定的测试用例,从而帮助我们更快的了解测试用例的运行结果。

四、pytest -k 高级用法

在 pytest 中,-k 参数不仅仅可以用单个测试用例名称进行匹配,还支持使用 Pyhon 表达式进行匹配。匹配表达式的格式为:”

pytest -k "expression"

这里的表达式可以是任意合法的 Python 表达式,包括运算符、函数调用等。pytest -k 会按照表达式的规则对测试用例进行匹配。

例如,我们有以下三个测试用例:

def test_add():
    assert 1+1 == 2

def test_subtract():
    assert 2-1 == 1

@mark.parametrize("x, y, expected", [(3, 2, 5), (1, 2, 3)])
def test_add_param(x, y, expected):
    assert x + y == expected

现在我们想运行包含 “add” 单词或参数数量大于等于3的用例。在命令行中使用 -k 参数:

pytest -v -k "add or len(parametrize.args)>=3" test_sample.py

结果如下:

test_sample.py::test_add PASSED
test_sample.py::test_add_param[3-2-5] PASSED

以上方式体现了 pytests 的扩展性和灵活性。开发者可以根据具体需要自由组合和匹配测试用例,以便快速运行测试。

五、pytest -k 的其他应用

除了按名称和表达式对用例进行选择和过滤外,pytest -k 还可以用于:按类选择,设置自定义标记(marker)过滤和更多自定义实现。

例如,我们有一个包含了两个测试类的测试套件:

class TestMath:

    def test_add(self):
        assert 1 + 1 == 2

class TestStat:

    def test_mean(self):
        assert sum([1, 2, 3]) / 3 == 2.0

我们可以通过以下命令来选择 TestMath 类中的测试用例:

pytest -v -k "TestMath" test_sample.py

结果如下:

test_sample.py::TestMath::test_add PASSED

除此之外,pytest -k 参数还可以用于支持一系列其他过滤操作,例如限制测试运行时间、错误报告等。因此,可以说 pytest -k 是一款功能强大的测试用例选择工具。

原创文章,作者:NLBRR,如若转载,请注明出处:https://www.506064.com/n/330918.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
NLBRRNLBRR
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相关推荐

  • JDK Flux 背压测试

    本文将从多个方面对 JDK Flux 的背压测试进行详细阐述。 一、Flux 背景 Flux 是 JDK 9 对响应式编程的支持。它为响应式编程提供了一种基于推拉模型的方式,以支持…

    编程 2025-04-29
  • Powersploit:安全评估与渗透测试的利器

    本文将重点介绍Powersploit,并给出相关的完整的代码示例,帮助安全人员更好地运用Powersploit进行安全评估和渗透测试。 一、Powersploit简介 Powers…

    编程 2025-04-28
  • Python接口自动化测试

    本文将从如下多个方面对Python编写接口自动化进行详细阐述,包括基本介绍、常用工具、测试框架、常见问题及解决方法 一、基本介绍 接口自动化测试是软件测试中的一种自动化测试方式。通…

    编程 2025-04-27
  • HR测试用例生成工具:hrtest的全面解析

    本文将从使用、功能、优点和代码示例等多个方面详细介绍HR测试用例生成工具hrtest。 一、使用 HR测试用例生成工具hrtest是一款可以自动生成测试用例的工具,省去了繁琐的手动…

    编程 2025-04-27
  • Android JUnit测试完成程序自动退出决方法

    对于一些Android JUnit测试的开发人员来说,程序自动退出是一个经常面临的困扰。下面从多个方面给出解决方法。 一、检查测试代码 首先,我们应该仔细检查我们的测试代码,确保它…

    编程 2025-04-25
  • Kali Linux:渗透测试人员必备的工具

    一、Kali Linux是什么 Kali Linux是一款以安全渗透测试为目的的操作系统,包含了众多渗透测试所需的工具和软件。基于Debian发行版的Kali Linux拥有着极强…

    编程 2025-04-25
  • crontab测试的详细阐述

    一、crontab的概念 1、crontab是什么:crontab是linux操作系统中实现定时任务的程序,它能够定时执行与系统预设时间相符的指定任务。 2、crontab的使用场…

    编程 2025-04-25
  • POST接口测试完整指南

    一、POST接口测试介绍 POST接口测试是一种测试的方式,主要用于测试Web应用程序。它是通过POST HTTP方法发送HTTP请求到Web服务器并且对服务器的响应进行验证的一种…

    编程 2025-04-25
  • Selenium Edge:探索自动化浏览器测试的更高境界

    一、利用Selenium Edge提升Web应用程序质量 Selenium Edge是一款基于Selenium WebDriver的增强版自动化浏览器测试工具,支持Edge浏览器。…

    编程 2025-04-25
  • NC命令测试端口详解

    一、NC命令简介 NC命令是一款重要的网络工具,它是一款强大的网络工具,它可以将数据包准确的传输和接收,提供了一种高效的数据传输方式。NC的全称是Netcat,它基于TCP/IP协…

    编程 2025-04-24

发表回复

登录后才能评论