pytest 基础认知

pytest是Python的一种高效单元测试框架,相比unittest更简洁。本文介绍了pytest的安装、测试用例编写规则,如测试文件命名、断言使用assert。还详细阐述了pytest的收集和运行规则,包括从当前目录找寻测试用例、按文件和函数名执行。同时,演示了在PyCharm中以pytest方式运行测试用例,以及通过命令行运行pytest的两种方法。
摘要由CSDN通过智能技术生成

pytest 简介

pytest 是 python 的一种单元测试框架,与 python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。

根据pytest的官方网站介绍,它具有如下特点:

  • 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  • 能够支持简单的单元测试和复杂的功能测试
  • 支持参数化
  • 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  • 支持重复执行(rerun)失败的case
  • 支持运行由nose, unittest编写的测试case
  • 可生成html报告
  • 方便的和持续集成工具jenkins集成
  • 可支持执行部分用例
  • 具有很多第三方插件,并且可以自定义扩展

pytest 安装

pip install pytest

使用该命令进行安装,安装的是最新版的pytest

安装html报告的插件:

pip install pytest-html

pytest插件地址

更多 pip相关命令,可查看以下两篇文章

pip 命令
pip下载更换镜像源

pytest用例规则

pytest 测试用例编写规则
  • 测试文件以 test_ 开头(以 _test 结尾也可以)
  • 测试类以Test开头,并且不能带有 init 方法
  • 测试函数以 test_ 开头
  • 断言使用assert
pytest收集测试用例的规则

1、默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索;

2、搜索规则:

  • 符合命名规则 test_*.py 或者 *_test.py 的文件
  • 以test_开头的函数名;
  • 以Test开头的测试类(没有 __init__函数 )当中,以test_开头的函数

3、pytest运行规则:

  • 查找当前目录及其子目录下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test_ 开头函数并执行。
  • pytest 是以方法为单位发现用例的,写不写测试类不重要。

4、pytest执行顺序:

  • 文件名称执行顺序按 ASCII码顺序执行。哪个文件先识别,就先执行哪个文件里的用例
  • 文件内部按代码的先后顺序执行用例

pytest 运行的几种方式

1、编辑器 pycharm

test_demo1.py

def func(x):
    return x

def test_answer():

    assert func(5)==5

在这里插入图片描述
此时右键运行,可以发现,控制台并没有返回任何结果

所以,需要指定以pytest的方式运行该文件
在这里插入图片描述
可以看到,现在是默认以python文件的方式运行的
在这里插入图片描述
所以,选中该test_demo1文件后,点击左上角 ,删除该文件的运行方式,然后点击 +
选择以 pytest方式运行该文件
在这里插入图片描述
如果选择以 pytest方式运行该文件后,没有默认导入相应的配置内容,就需要自己去添加
在这里插入图片描述
添加成功后,右上角会变成以pytest方式运行该文件
在这里插入图片描述
点击运行即可
在这里插入图片描述
此时断言是成功的,所以用例通过

2、命令执行
1. pytest

新建一个类,然后在类里面新建一个函数
test_demo1.py

def func(x):
    return x

def test_answer():

    assert func(5)==5


class TestDemo:

    def test_answer2(self):
        assert func(4) == 5

打开pycharm的终端,或者使用 cmd 命令进入终端也行,然后进入需要运行 pytest 用例的目录下,输入命令 pytest
在这里插入图片描述
用例的执行顺序,先执行了test_answer,然后再执行test_answer2,根据代码顺序由上而下执行

2. python -m pytest

在当前文件夹下新建一个demo目录,然后在demo目录下新建一个py文件

test_demo2.py

def func(x):
    return x

def test_answer3():

    assert func(2)==2

在终端输入命令:

python -m pytest

这种方式和输入命令 pytest效果是一样的

在这里插入图片描述

可以发现,用例执行了,rootdir 指的是需要发现测试用例的目录。只要指定的目录或其子目录下存在测试用例,就会被pytest机制发现并执行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值