• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

stevenhk

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

从零开始学习pytest(一)

一.pytest简介

1.1 pytest的概念

​ pytest是一个基于python的测试框架,支持简单的单元测试和复杂的功能测试,因其简单易用的特点广受开发者青睐。pytest可以结合其他如selenium或request实现web自动化和接口自动化,也可以结合allure生成测试报告文档。

1.2 pytest的基础架构

1.pytest的测试发现机制

​ pytest可以自动识别test_*.py或 *__test.py文件

​ pytest支持自动收集Test类及test_方法

​ 支持通过(pytest.ini)来自定义发现规则

2.断言重写系统

 原生assert自动提供详细失败信息
assert response.status_code == 200  # 失败时会显示实际值

3.插件体系结构

​ 内置插件:tmpdir、capture等

​ 外部插件:pytest-cov、pytest-mock等

​ 自定义插件:通过conftest.py实现

二.pytest的安装

ps:由于pytest是基于python环境的测试框架,所以在开始pytest的学习之前应确保自己的设备已经配置了python环境,且要求python 3.8+,此外还需一个python IDE,本文使用pycharm

​ 1.安装pytest,在命令行输入一下内容

pip install pytest

​ 2.检查是否安装成功,在命令行输入以下内容,安装成功则会输出pytest版本信息

pytest --version

三.创建你的第一个pytest程序

​ 在pycharm创建一个test_first_file.py文件,编写以下代码

def fun(x):
    return x+1
def test_first():
    assert fun(4) == 4

​ 运行程序,如果没有问题,你的输出结果应该如下,恭喜你成功编写了你的第一个测试程序!

============================= test session starts =============================
collecting ... collected 1 item

test_first_file.py::test_first FAILED                                    [100%]
test_first_file.py:2 (test_first)
5 != 4

Expected :4
Actual   :5
<Click to see difference>

def test_first():
>       assert fun(4) == 4
E       assert 5 == 4
E        +  where 5 = fun(4)

test_first_file.py:4: AssertionError


============================== 1 failed in 0.25s ==============================

Process finished with exit code 1

四.pytest几种测试用例的运行方式

​ 1.主函数模式

​ 运行所有测试脚本:pytest.main()

​ 指定模块脚本:pytets.main(['-vs','test_login.py'])

​ 指定目录下的脚本:pytest.main(['-vs','./tetscase'])

​ 2.命令行模式

​ 运行所有测试脚本: pytest

​ 运行指定模块:pytest -vs test_login.py

​ 指定目录:pytest -vs ./testcase

	参数注释:
	-s : 表示输出调试信息,包括print打印的信息
	-v: 显示更详细的信息
	-vs : 这两个参数可以一起用
	-n : 支持多线程或者分布式运行测试用例
	-x : 表示只要一个用例报错,那么测试停止
	-k : 根据测试用例的部分字符串指定测试用例。
	--html ./report/report.html : 生成html的测试报告

​ 3.读取pytest.ini文件

五.更加详细的断言

​ 1.python原生的assert

assert formula , "result"

​ 在python的原生assert中,formula可以看作一个表达式,如果该表达式的结果为'true',则执行pass,反之,如果结果为’failure‘,则抛出AssertError,并打印错误信息’result‘。

​ 2.pytest的断言

​ 在软件测试工作中,经常会遇到断言失败的情况,如果每次失败都需要测试工程师去排查错误原因,那工作量将是十分巨大的,而pytest中的断言完美解决了这个问题,在pytest中,当断言失败的时候,控制台会打印出详细的错误信息,大大减少了测试工程师的工作量。

​ 就我们的第一个测试程序来说,控制台打印信息详细写出了期望结果与实际结果,并记录了是那一段代码造成的错误。

============================= test session starts =============================
collecting ... collected 1 item

test_first_file.py::test_first FAILED                                    [100%]
test_first_file.py:2 (test_first)
5 != 4

Expected :4
Actual   :5
<Click to see difference>

def test_first():
>       assert fun(4) == 4
E       assert 5 == 4
E        +  where 5 = fun(4)

test_first_file.py:4: AssertionError


============================== 1 failed in 0.25s ==============================

Process finished with exit code 1

posted on 2025-03-28 18:16  stevenhk  阅读(144)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3