Python 执行 Pytest
同学们大家好,这个章节我们来学习如何使用 python 命令来执行 pytest 测试用例。
简介
pytest 是一个用于编写和执行 Python 测试的强大的测试框架。
通过使用 Python 命令也可以来执行 Pytest 测试。
pytest 是基于 python 语言的测试框架,它不仅能帮助我们验证代码的正确性,还能高效地进行批量测试。除了自身的执行方式之外,它还可以通过 python 命令可以直接执行 pytest 测试,这给我们的自动化测试工作提供了更灵活的方式。
Python 执行 Pytest 的优点
-
批量执行测试:使用 Python 代码,可以轻松批量执行测试套件中的多个测试文件,以提高测试效率。
-
自定义测试过程:可以编写自定义脚本来配置测试过程,例如设置测试环境、准备测试数据、处理测试结果等。
使用 python 执行 pytest 有几个明显的优点。首先是批量执行测试,借助 python 代码,我们可以一次性运行多个测试文件,这样能大大提高测试效率。另外,我们还可以自定义测试过程。比如,使用 python 脚本来自动设置测试环境、准备测试数据,甚至收集和处理测试结果,这样测试过程就变得更加灵活和自动化了。下面就来看看具体执行的方式。
Python 执行 Pytest 方式
- 使用 main 函数。
- 使用
python -m pytest
调用 pytest(jenkins 持续集成用到)。
通过 python 执行 pytest 也支持好几种方式,其中两种最常见的是通过 main 函数和 python 杠m pytest 命令。接下来我们会分别讲解这两种方式。
使用 main 函数执行 pytest
代码示例:
if __name__ == '__main__':
# 1、运行当前目录下所有符合规则的用例,包括子目录(test_*.py 和 *_test.py)
pytest.main()
# 2、运行test_mark1.py::test_dkej模块中的某一条用例
pytest.main(['test_mark1.py::test_dkej','-vs'])
# 3、运行某个标签
pytest.main(['test_mark1.py','-vs','-m','dkej'])
首先先来看使用 main 函数执行的方式。这种方式可以把执行语句写在 if 杠杠name等于等于杠杠 main 语句当中,这样 python 解释器就会在执行时自动调用里面的代码。然后可以调用 pytest点main 方法来执行当前目录下所有符合 pytest 规则的测试用例。main 方法中需要传入一个列表,列表中可以传入需要的参数。比如当我们有一个包含多个测试文件的文件夹时,只需要运行这个命令,就可以批量执行所有的测试用例。我们也可以指定执行某个特定的测试用例,比如在 test_mark1点py 文件中执行名为 test dkej 的某个用例。只要传入正确的路径和用例名,pytest 就会执行对应的测试用例。如果我们还想看详细的日志,可以加上 杠vs 参数,杠v 表示详细日志,杠s 则表示打印输出日志,帮助我们更清楚地看到测试过程。此外,如果我们只想执行某个特定标签的测试用例,可以通过 杠m 参数来指定标签,比如在 test mark1点py 文件中,执行标签为 dkej 的测试用例。
运行方式:python test_*.py
当我们这样配置好之后,只需要在命令行执行 python 文件名,就可以直接这个文件中 main 入口函数中的逻辑,然后 pytest.main 方法就会被执行,pytest 测试用例就可以成功执行了。执行的结果和单独执行 pytest 的一样的。
使用 python 执行 pytest
python -m pytest
是在命令行中使用 pytest 的一种方式。它通过 python -m
选项以模块的形式运行 pytest,相当于直接运行 pytest
命令。
使用 python -m pytest
的主要优势在于保证运行的是当前 Python 环境中的 pytest,避免因多版本或路径问题导致的混淆。一般推荐在跨平台或虚拟环境中使用,以确保一致性。
另一种方式是使用 python 杠m pytest 命令,这个方式也常见于持续集成环境中,尤其是 jenkins 等工具中。python 杠m pytest 实际上是在命令行中运行 pytest 的一种方式,它通过 python 杠m 选项以模块的形式调用 pytest。这个方法的一个优势是能够确保运行的是当前 python 环境中的 pytest,避免由于环境中有多个版本的 pytest 或路径配置错误造成的混淆。比如说,我们在一个虚拟环境中使用 python 杠m pytest,就能确保我们运行的是虚拟环境中的 pytest,而不是系统其他地方的版本,这样可以避免环境不一致的问题,保证跨平台运行时的稳定性。
下面给大家演示一下具体操作。进入项目之后,我们现在已经准备好了一个测试文件,文件里准备好了被测对象还有几条测试用例。接下来我们先来通过入口函数中的 main 方法设置运行方式。先来设置运行所有的测试用例,我们直接用 pytest点main。设置好之后来看看怎么执行。在对应目录上点击鼠标右键选择 open in terminal 进入命令行,直接就会进入到这个目录所在路径,然后在 python 命令后面跟上这个测试文件的文件名。可以看到当前目录中所有符合 pytest 规则的这些用例就全部的都被执行了。
./assets/Python执行Pytest.mp4
好,那接下来的话我们再来看一下,通过 main 函数也可以去执行某一个标签下的用例。那这样的话 main 方法中的参数需要写在一个列表当中,比如说第一个参数我们先指定它执行的测试文件,文件名要写在字符串中,比如说就是pytest python run 点py。还可以在文件名的后面加上要执行的测试用例是哪一个。然后我们还可以再给它加上一些参数,比如说 杠vs。那加完了之后我们再来执行一下。可以看到这样的话,我们就只执行了一个测试用例,并且它也打印了通过 print 输出的数据。
./assets/Python执行Pytest.mp4
或者的话我们还可以去加一些别的。这里我们还是使用 pytest点main。然后同样传入的参数需要放到一个列表中。首先我们先来指定要执行的测试文件的文件名。那么指定好文件之后的话,我们再指定它执行的参数 杠vs。然后我们还可以去指定它要去执行某个标签的用例,先使用 杠m,然后再传入标签名。设置好之后同样再来执行一下。可以看到我们现在执行的就是当前的指定的这个标签下面的用例。
./assets/Python执行Pytest.mp4
那或者的话我们也可以不用这种方式,先把它全部都注释掉。接下来我们进入命令行,在这里我们也可以使用一个命令,比如说叫 python 杠m pytest,然后的话后面跟上我们对应要执行的这个文件名。好,那这样的话我们也可以成功地去执行它。
./assets/Python执行Pytest.mp4
总结
- 使用 main 函数执行 pytest。
- 使用
python -m pytest
。
最后来总结一下。这个章节我们学习了两种主要的方式来执行 Pytest 测试:第一种是通过在 Python 脚本中使用 main 函数来运行测试;第二种是通过命令行中的 python -m pytest 来运行,这种方式特别适合需要保证环境一致性时使用。通过这些方法,我们可以更高效、灵活地执行测试用例。好了,关于通过 python 执行 pytest 就先介绍到这里。