pytest命令行参数深度解析:重跑失败用例与收集规则

2 下载量 15 浏览量 更新于2024-08-29 收藏 115KB PDF 举报
"本文主要介绍了Python的pytest框架中的一些命令行参数的使用,以及pytest如何收集测试用例的规则。" 在Python的自动化测试领域,pytest框架因其强大的功能和易用性而广受欢迎。在执行测试用例时,正确理解和使用命令行参数能够极大地提升测试效率。下面是对pytest命令行参数的详细解析: 1. **`--collect-only`**:这个参数用于列举当前目录下的所有测试模块、测试类和测试函数,但不执行它们。这对于快速查看项目中的测试结构非常有用。 2. **`--tb=style`**:这个参数用于控制测试失败时的回溯信息显示方式。style可以是`on`, `line`, `short`等,例如`--tb=short`可以简化输出,方便快速定位问题。不同的风格在显示失败信息的详略程度上有所差异,用户可以根据需要选择。 3. **`--lf`**:此参数用于在测试失败后重新运行那些失败的测试用例。当第一次执行测试时如果有失败,使用`--lf`参数再次运行,pytest只会执行上次失败的测试,有助于快速修复错误。 4. **`--ff`**:与`--lf`类似,`--ff`不仅会重跑失败的测试用例,而且会在每次运行时首先执行这些失败的用例,即使后续的用例没有失败,也会再次执行。这有助于开发者优先处理失败的测试。 除了上述参数,pytest还提供了许多其他命令行选项,如`-k`用于根据关键字筛选要执行的测试,`-v`增加输出的详细程度,以及`-s`允许在测试运行期间显示stdout和stderr的输出等。要查看完整的帮助信息,可以使用`pytest --help`命令。 pytest在收集测试用例时遵循以下规则: 1. **搜索范围**:pytest会从指定的目录或文件开始查找,如果没有指定,则从当前目录开始。 2. **测试模块**:它会寻找文件名以`test_`开头或以`_test`结尾的.py文件。 3. **测试函数**:在测试模块中,pytest寻找以`test_`开头的函数作为测试用例。 4. **测试类**:pytest还会查找以`Test`开头的类,并且这些类中的方法如果以`test_`开头,也将被视为测试用例。 5. **排除规则**:pytest会忽略包含`__init__.py`的目录,以及不以`Test`开头的类,除非它们的类方法符合测试函数的命名规则。 通过以上的规则,pytest能够智能地识别并组织测试代码,使得测试的编写和执行变得简单高效。为了验证这些规则,开发者可以通过创建符合规则的测试结构并观察pytest的行为来进行实践。 在实际项目中,测试用例通常会更加复杂,可能涉及 fixture 的使用、参数化测试、断言等高级特性。掌握pytest的基础命令行参数和收集规则是有效进行测试工作的第一步。随着对pytest框架的深入学习,开发者可以更好地利用其特性来提高测试的覆盖率和效率。