
Pytest
前段时间,写了一个插件pytest-tmreport,也有很多小伙伴给出了反馈,在这里小提莫非常感谢大家的支持。
为了让大家对pytest这个火爆全网的测试框架有更深入的了解,后续会出一个pytest系列,大家多多关注。
那么本期给大家带来的是pytest的入门教程。
01
介绍
首先pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序。
那么在学习之前,我们要先分清楚概念,pytest是自动化框架吗?
答案肯定是,No。pytest是个单元测试框架,而并非自动化框架,市面上我们通常称unittest, pytest, nose等框架为单元测试框架,而像httprunner这种支持多种功能如框架功能,测试报告 ,性能测试等等,由多个工具集成起来的框架,我们称为自动化框架。所以各位不要再把pytest说成自动化框架了!pytest是单元测试框架!
pytest官网地址:
https://docs.pytest.org/en/6.2.x/在开始之前我们先来比较一下市面上的主流的单元测试框架。
在比较了三个框架后,可以看到,无论从框架功能来说,还是用例编写难度,扩展性来说, pytest无疑就是最好的选择,unittest是Python自带的单元测试框架,功能较少需要自己实现,而nose就更加冷门了,一般很少人会去用。所以我们要下定决心,学好pytest。
02
环境配置
首先在使用前,需要pip安装
pip install pytest
复制
安装完毕后,如果你是用的pycharm写代码,我们需要对其进行一下设置,路径为Preferences-Tools-Python integrated Tools

这样可以把我们的默认执行器切换为pytest,默认是unittest。
03
编写第一个用例
我们来创建一个test_pytest.py文件,并定义一个函数,类似下面这样:
import pytest # 导入pytest
def test_pytest(): # 定义测试函数
print("test_pytest run")
if __name__ == '__main__': # 定义主函数
pytest.main() # 调用pytest
复制
可以看到,这时测试函数和主函数左侧会出现一个小箭头:

我们点击执行一下,控制台输出了以下信息:

可以看到,左侧出现了执行结果列表,如果没有出现需要检查一下上面pycharm的配置,如果你照着做了还是不对,那么可能是右上角那块的执行器的问题,需要删除后重新执行。右侧 可以看到是我们的执行信息的输出,非常的方便。
怎么样,是不是so easy,那么除了上面一种pytest的用例编写方式,这种是基于测试函数的,实际上还存在另一种,基于测试类的:
import pytest # 导入pytest
class TestPytest:
def test_pytest(self): # 定义测试函数
print("test_pytest run")
if __name__ == '__main__': # 定义主函数
pytest.main() # 调用pytest
复制
执行结果如下:

所以我们总结一下,pytest支持以下两种用例编写形式:
基于测试函数
基于测试类
而我们的unittest中,只支持一种:
1. 基于测试类的(并且是TestCase的子类)
04
pytest的用例检索规则
在pytest中,测试用例需要满足以下条件:
测试文件名以test_开头或者_test结尾
测试类要以Test开头
测试函数要以test_开头
当我们使用pytest命令行执行,pytest会去找到当前目录下所有的满足以上要求的文件,测试函数以及测试类,把他们识别为测试用例,这样子pytest才能够去执行,否则你只能在执行的时候指定测试文件名,测试类以及测试函数。
pytest的命令行执行格式如下:
pytest 测试文件名::测试类::测试方法
OR
pytest 测试文件名::测试函数
复制
而直接使用pytest,则会找当前路径下的,如下:
pytest
========================================================================================================================== test session starts ==========================================================================================================================
platform darwin -- Python 3.8.2, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
rootdir: Users/zhangyingkai/PycharmProjects/pytest_demo
collected 1 item
test_pytest.py . [100%]
=========================================================================================================================== 1 passed in 0.01s ===========================================================================================================================
复制
本期的内容比较简单,比较适合初学者,后续会一步步进阶 ,一步一个脚印!麻烦动动小手,点个关注哦!

微信号|ya1kaikai
· 迅捷小侯 ·