Pytest 配置文件
接下来我们来学习 pytest 中的配置文件如何设置。
简介
pytest.ini 是 Pytest 测试框架的配置文件,它允许自定义和配置测试运行的各种设置和行为。
通过编辑 pytest.ini
文件,可以指定测试目录、选择测试报告格式、配置 Fixture 和插件等。
这个文件通常位于测试项目的根目录或测试模块的目录中。
首先先来了解一下这个配置文件。在 pytest 中,pytest点ini 是用来配置测试框架的一个文件。通过这个文件,我们可以调整 pytest 的一些设置和行为,比如指定测试的目录、设置测试报告的格式、配置 fixture、添加插件等。一般来说,pytest点ini 文件会放在项目的根目录或者测试模块所在的目录里。
Pytest 配置文件的优点
-
集中管理:通过使用
pytest.ini
配置文件,可以将测试框架的配置信息集中管理在一个文件中。这样,所有的配置选项可以在一个地方进行设置和修改,使得配置更加方便和统一。 -
易于维护:将配置信息放在
pytest.ini
文件中可以使得配置和测试代码相分离,使项目结构更加清晰。这样,测试代码可以更专注于具体的测试功能,而配置信息的修改不会直接影响测试代码,因此更容易进行维护和更新。 -
可重用性:配置文件可以被多个测试文件共享,使得相同的配置可以在各个测试模块中重复使用。这样,当测试项目的配置需要修改时,可以在
pytest.ini
文件中进行一次修改即可,无需在每个测试文件中手动修改配置。 -
配置选项的灵活性:
pytest.ini
配置文件允许设置多个配置选项,如输出报告的格式、测试用例的匹配规则、测试覆盖率的配置等。通过配置文件,可以灵活地定制和调整测试框架的行为,以满足不同项目的需求。
使用 pytest.ini 配置文件有几个显著的好处。首先,它让我们可以集中管理所有的测试配置项,把所有的设置都集中在一个地方,方便修改和管理。比如我们想统一设置所有测试的执行规则,直接在配置文件里调整就可以了。其次,它提高了维护性。因为配置信息和测试代码分开存放,测试代码就可以更专注于具体的测试功能,不会受到配置修改的影响。所以,修改配置文件不会影响到代码的逻辑,这让项目的维护变得更简单。再者,配置文件的可重用性也是一个大优势。我们可以在多个测试文件之间共享这个配置文件,保证大家使用的是一致的配置。这样,当配置有变动时,只需要修改一次配置文件,所有的测试文件都会自动生效。最后,pytest.ini 配置文件非常灵活,可以配置很多选项,比如测试报告的格式、哪些文件需要被执行、如何处理测试覆盖率等等。我们可以根据项目的具体需求来灵活定制 pytest 的行为。
Pytest 配置文件的使用
改变运行规则
可以通过配置文件或命令行选项来改变 Pytest 的运行规则。
[pytest]
;执行check_开头和 test_开头的所有的文件,后面一定要加*
python_files = check_* test_*
;执行所有的以Test和Check开头的类
python_classes = Test* Check*
;执行所有以test_和check_开头的方法
python_functions= test_* check_*
下面我们来看看具体配置方式。在 pytest.ini 文件中,如果想指定哪些文件需要执行,你可以在配置文件里自定义搜集的规则。比如这个例子中,我们设置了运行以 check下划线 或 test下划线 开头的文件,类似的规则可以应用到类和方法名。这样就能控制哪些测试用例被执行。
注意:windows 系统需要把中文注释去掉。
大家的在配置的时候需要注意,如果你使用的是 Windows 系统中的话,记得去掉中文注释,否则可能会报错。
添加默认参数
可以通过在 Pytest 配置文件中添加默认参数来改变 Pytest 的默认行为。这些默认参数将应用于每次运行测试,而无需在命令行上指定它们。
addopts 是 Pytest 配置文件中的一个选项,用于添加额外的命令行参数。
例如,如果想要默认启用详细的输出 (-v) 和缓存清理 (--cache-clear)。
[pytest]
addopts = -v --cache-clear
在配置文件中,还可以为 pytest 添加一些默认参数。这意味着每次运行测试时,pytest 会自动带上这些参数,而你就不需要每次都在命令行里输入它们。举个例子,如果你想默认开启详细输出模式并且清理缓存,可以设置 addopts 等于 杠v 杠杠cache杠clear。这样每次运行测试,pytest 都会自动添加这些选项。
指定/忽略执行目录
可以使用 Pytest 配置文件来指定执行测试的目录或者排除某些目录。
[pytest]
;设置执行的路径
testpaths = bilibili baidu
;忽略某些文件夹/目录
norecursedirs = result logs datas test_demo*
另外,如果想指定某些目录作为测试目录,或者排除一些不需要测试的目录,也可以通过配置文件来实现。testpaths 用来指定 pytest 要执行的测试目录或文件。norecursedirs 用于指定哪些文件夹或目录应该被 pytest 忽略,pytest 在运行时不会进入这些目录递归查找测试文件。比如,如果测试文件在 bilibili 和 baidu 目录下,其他的都不需要测试,就可以配置 testpaths 等于 bilibili baidu。这样,pytest 只会在 bilibili 和 baidu 目录下找测试用例,而 result logs datas test demo 这些目录会被忽略。
日志
可以配置日志以记录测试运行期间的事件和信息。这对于调试和问题排查非常有用。要在 Pytest 中配置日志,需要使用 Python 的标准logging
模块。确保项目中已经导入了 logging
模块。
[pytest]
;日志开关 true false
log_cli = true
;日志级别
log_cli_level = info
;打印详细日志,相当于命令行加 -vs
addopts = --capture=no
;日志格式
log_cli_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志时间格式
log_cli_date_format = %Y-%m-%d %H:%M:%S
;日志文件位置
log_file = ./log/test.log
;日志文件等级
log_file_level = info
;日志文件格式
log_file_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志文件日期格式
log_file_date_format = %Y-%m-%d %H:%M:%S
日志配置也是 pytest点ini 文件的重要部分。通过配置日志,可以记录测试过程中发生的事件和信息,帮助调试问题。例如可以设置日志的级别、格式和输出位置。这里给大家一个简单的日志配置示例。这个配置会开启日志记录,并且把日志输出到指定的文件中。这样就可以在日志中看到详细的测试信息,帮助我们更好地分析问题。
下面来给大家演示一下具体操作。进入项目之后,我们在这个项目的根目录下配置了一个配置文件,那在这里面我们可以指定搜集不同的这个前缀的名字,然后指定了一些命令行的这样的一些这个参数,然后指定了我们的测试目录,还有就是非测试的目录,然后进行了一些日志的这样的一些设置。然后我们在 SRC 这个目录下也放了一个符合规则的这样的一个测试用例,然后在 tasks 下面,然后也放了我们就是用 check demo 这样的一个用例,然后在这个里面的话,我们也是用了 check 的这个前缀来定义的这样的一个用例。好,那现在的话我们进入到这个命令行,直接的来执行一下 py test,执行之后我们来看看结果,首先它搜集到了这个测试的这个目录下面的两条用例,对不对?那然后的话它详细的信息也打印出来了,对吧?然后这是它的日志信息,然后他也这个成功的执行了,这是第二条,然后他是失败了,然后这边是他的这个日志信息。好,那么然后的话我们的目录当中这块也出现了一个叫做log,在 log 里面我们也可以看到打印进来的这个日志啊。那所以说我们配置的这些就已经生效了。
./assets/Pytest配置文件.mp4
总结
- Pytest 配置文件的优点。
- Pytest 配置文件的使用。
好了,关于 pytest.ini 配置文件的使用我们先介绍这么多。