Pytest 运行用例
同学们大家好,这个章节我们来学习 pytest 中如何运行自动化测试用例。
简介
Pytest 既可以用界面化方式运行,也可以使用代码来运行。根据需求,可以选择使用界面方式来手动运行或使用代码方式来自动运行测试。
在 pytest 中,我们有两种方式可以运行测试用例。第一种是通过图形界面,像 pycharm 这样的 IDE 里直接点击运行。第二种则是通过命令行,可以直接通过命令行来控制运行的方式。实际使用的时候,根据自己的需求,选择适合的方式就可以了。
操作步骤
- 利用 PyCharm 实现界面化运行
- 命令行方式运行
下面我们分别来看看具体操作步骤。
利用 PyCharm 实现界面化运行
- 运行 某个/多个 用例包。
首先,先来看看在 pycharm 界面上如何进行操作。比如,我们可以运行整个用例包,可以鼠标移动到包上,点击鼠标右键,然后选择绿色三角运行按钮就行,这样包下的所有用例都会被执行。就像我们在做项目管理时,点击某个目录或者文件,所有相关的内容会一起加载一样,测试也是如此。
- 运行 某个/多个 用例模块。
如果我们只想运行某个特定的测试模块也就是测试文件,同样的可以把鼠标移动到文件上,点击鼠标右键,然后选择绿色三角运行按钮。这样,我们就能指定运行某个文件内的所有测试用例,不用管其他不相关的文件了。另一种方法也可以打开这个测试文件,鼠标点击空白处,然后点击鼠标右键,然后选择绿色三角运行按钮也可以执行整个测试文件。
- 运行 某个/多个 用例类。
接下来,如果我们只想运行某个特定的测试类,比如我们有多个测试类,每个类里面测试不同的功能,我们可以在 pycharm 中点击这个测试类左侧的绿色三角运行按钮就可以,这样就只会执行该类中的所有测试用例。
- 运行 某个/多个 用例方法。
最后,如果我们只想执行某个具体的测试方法,pycharm 同样支持。我们只需要点击对应测试方法前面的绿色三角运行按钮就可以了。这样就会只执行当前的测试方法。
命令行方式运行
- 执行包下所有的用例:
pytest 包名
。 - 执行单独一个 pytest 模块:
pytest 文件名.py
。 - 运行某个模块里面某个类:
pytest 文件名.py::类名
。 - 运行某个模块里面某个类里面的方法:
pytest 文件名.py::类名::方法名
。
除了界面化方式,命令行也是一个常用的方法。通过命令行,也可以很灵活地运行测试用例。比如,如果我们想执行某个包下的所有测试用例,我们只需要输入 pytest 包名,pytest 会自动执行这个包里的所有用例。如果我们只想运行一个特定的测试模块,那么直接在命令行输入 pytest 文件名就行,这样只会执行这个文件里的所有测试。这个方法特别适合我们只想测试某个文件的场景。有时候,我们可能只想执行某个模块中的某个类,没问题,命令行也支持这个。我们只需要输入 pytest 文件名两个冒号类名,这样就会运行该模块中的指定类中的所有测试用例。如果我们只关心某个类中的某个方法,我们可以更进一步,使用 pytest 文件名两个冒号类名两个冒号方法名 来执行该方法的测试。这个方式就像我们选择了某个功能中的一个具体操作,只测试那个部分。
常见的运行结果
- fail(测试用例未通过)
- error(代码中有错误、添加不正确断言等)
- pass(测试用例通过)
- warning(警告不影响程序执行)
- deselect(没有被选中)
了解了如何执行用例之后,我们再来了解一下常见的运行结果都有哪些。在运行测试用例时,pytest 会给出不同的结果,帮助我们了解测试的状态。如果测试用例没有通过,pytest 会显示 fail。如果代码有错误,比如添加了不正确的断言,pytest 会显示 error,这通常表示代码本身有问题,可能是写错了逻辑。当测试用例正常通过时,pytest 会显示 pass,这说明我们的代码在这个测试下是正常的,没有发现任何问题。如果有警告出现,pytest 会显示 warning,不过警告并不意味着测试失败,它只是提醒我们有某些潜在的问题,但不影响程序继续执行。还有一种状态是 deselect,这是指某些测试用例没有被选中执行。如果我们在运行测试时,指定了某些条件,只选中了部分用例,未选中的就会显示 deselect。
下面给大家演示一下具体操作。项目里已经准备好了一个测试文件,里面有被测对象、测试函数、测试类和测试方法。那现在比如说我们要通过界面执行整个测试文件,可以看到测试函数和方法都执行了。或者我们也可以去执行整个测试类,点击类前面的绿色三角按钮,这样的话就只有类下面的两个用例被执行了。界面上也可以单个的执行某一个测试函数或者是测试方法,点击对应测试方法前面的绿色三角按钮,这样单独的这个测试方法就被执行了。接下来我们再演示一下命令行执行的方式。首先我们先进入到命令行中,用 pytest 命令后面跟上对应的包名,这样的话就可以执行包下面所有的测试用例了。然后我们再进入到某个包下,选择对应目录鼠标右键选择 open in terminal 就可以,然后在 pytest 命令后跟上对应的测试文件名,这样测试文件中的 4 条用例就被执行了。接下来我们再来指定要执行的测试类。在刚才命令的基础之上用两个冒号连接要测试的测试类名。这样的话只有测试类里面的两个用例被执行了。继续在刚才命令的基础上,在类名的后面用两个冒号连接要执行的测试方法的名称,这样的话单个的测试方法就也被执行了。
./assets/Pytest运行用例.mp4
总结
- 利用 PyCharm 实现界面化运行。
- 命令行方式运行。
- 常见的运行结果。
最后来总结一下,这个章节我们学习了通过 PyCharm 的界面化操作来方便地运行某个测试包、模块、类或者方法。如果不想使用图形界面,也可以通过命令行灵活运行测试,用命令来执行单个用例或者特定的用例组。通过了解测试结果的状态,比如 fail、error、pass、warning,我们可以快速掌握测试执行的情况。好了,关于 pytest 如何运行测试用例我们就先介绍这么多。