1.Pytest - 快速上手Pytest-环境准备以及基本使用
前言
之前一直在用 unittest 做自动化,中间也有使用过 pytest,但是也没有写文档,导致后续隔一段时间
重新使用的时候要花费不少时间去看,调试代码,所以接下来会更新一些 pytest 的使用,
以及怎么结合项目进行使用,比如 selenium + pytest,requests + pytest。
使用的环境版本:
python 3.7.3 + pytest 7.0.1
一、pytest 的安装以及基本使用
pytest 的官方文档:
https://pypi.org/project/pytest/5.1.0/
中文文档:
https://www.osgeo.cn/pytest/contents.html
安装
在 cmd 中执行安装命令,可以指定版本,不指定版本安装的就是最新版本。
pip install pytest==7.0.1 -i https://pypi.douban.com/simple
查看是否安装成功:
pip show pytest
pytest优点
-
入门简单,文档丰富
-
支持单元测试,功能测试
-
支持参数化,重复执行,部分执行,测试跳过
-
兼容其他测试框架(nose,unittest 等)
-
支持生成html报告
-
可集成CI环境(Jenkins 等)
-
第三方插件丰富,良好的自定义扩展性
pytest 对比 unittest
-
unittest是python中的官方库,兼容性更好,更稳定,pytest在安装的时候,可能会出现和python版本的兼容问题。
-
unittest编写用例一定要以类的形式去编写,而且必须要继承TestCase,
-
pytest编写用例,既可以使用类的形式,又可以使用函数的形式,并且无需继承
-
unittest要自己加载用例到套件,再去执行,pytest更加智能,会自动查找用例
-
pytest可以对用例打便签做分类管理,可以通过便签筛选用例,执行用例更加的灵活
-
pytest有用例失败重运行机制,unittest没有。
-
pytest支持的插件非常丰富,功能扩展性强。
-
pytest用例执行的前置后置处理更加灵活
-
unittest有好多种断言方法,pytest只有assert
-
unittest参数化需要结合ddt使用,pytest有自己的参数化方法 @pytest.mark.parametrize装饰器
-
Pytest测试类以Test开头,并且不能带有 init 方法
快速上手:
import pytest
class Test():
def test01(self):
print('第一条用例')
assert 1==1
def test02(self):
print('第二条用例')
assert 2==2
def test03(self):
print('第三条用例')
assert 3==3
if __name__ == '__main__':
pytest.main()
汇总:
- pytest执行规则是通过调用目录下文件名为test_.py及_test.py文件。
- pytest执行时类名必须是通过Test开头,函数也必须是test为前缀,且类Test下不能有__init__方法。
- pytest断言是通过assert进行调用