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()


汇总:

  1. pytest执行规则是通过调用目录下文件名为test_.py及_test.py文件。
  2. pytest执行时类名必须是通过Test开头,函数也必须是test为前缀,且类Test下不能有__init__方法。
  3. pytest断言是通过assert进行调用
posted @ 2022-04-01 09:07  西瓜_皮  阅读(268)  评论(0编辑  收藏  举报