pytest测试框架

发布时间 2024-01-07 12:06:48作者: 测试开发孵化园

1.pytest框架

1.1.测试框架

常用单元测试框架介绍

python内置测试框架:unittest

python第三方测试框架:pytest

为什么要使用测试框架:

1.测试发现:从不同的目录,文件中收集测试用例

2.用例执行:执行用例、并且收集测试结果(报告)

3.报告输出:用例数量、执行时长、失败原因、通过率

1.2 安装pytest

  • pip install pytest
  • pip:python包管理器
  • install 进行安装的命令
  • uninstall卸载的命令
  • pytest 第三方库名字

验证安装就绪:pytest

1.3 编写用例

pytest充分的应用了python的特色:

  • 函数
  • 装饰器
  • 生成器

pytest的用例要求:

  1. 创建test_开头的文件
  2. 创建test_开头的函数
  3. 使用assert断言
1 def test_ok():
2     assert 1 == 1
3 
4 
5 def test_fail():
6     assert 1 == 2

1.4 执行测试用例

1.命令行

pytest

2.代码

import pytest

pytest.main()

1.5 查看运行结果

 运行文件目录

 windows系统版本--python版本-pytest版本-python插件系统

 用例根目录(项目路径)

 找到多少个用例

 结果缩写

缩写 含义
. 通过
F 失败
E 出错
s 跳过
X 预期外的通过
x 预期内的失败

 

 

 

 

 

 

 

1.6 pytest发现规则

  1. 遍历所有的目录(特殊目录除外,比如venv)
  2. 打开test_开头、_test结尾的python文件
  3. 寻找Test开头的类,并且没有__init__方法的类
    1. 从类中按照函数的要求寻找方法
  4. 寻找test开头的函数:
    1. 不能拥有参数
    2. 不能拥有返回值

重点:在pytest中,只有函数和方法,才会被视为测试用例

用例不能拥有参数,因为pytest调用的时候,不知道如何传参

用例不能当做普通函数去调用,因为会违背用例的执行规则

典型现象:用例A调用用例B

用例自始至终,是供框架调用的,用例之间相互隔离,不能直接传递参数

2 pytest高级用法

2.1 配置

改变pytest默认的行事规则,有两种方式:

  • 命令行选项
  • ini配置文件

查看所有配置

pytest -h

例子1: pytest --capture=no

配置文件选项

 例子2:

 常用配置

[pytest]
addopts= --capture=no
常用选项:
  • s:简化版 --capture=no
  • v:详细显示执行情况
  • q:简化显示执行情况
  • x:快速退出

约定大于配置:对于成熟的工具来说,默认的配置或许就是最好的配置,如非必要,请勿修改