从零开始学习pytest(一)

news/2025/3/31 14:32:35/文章来源:https://www.cnblogs.com/stevenhk/p/18798585

一.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 itemtest_first_file.py::test_first FAILED                                    [100%]
test_first_file.py:2 (test_first)
5 != 4Expected :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 itemtest_first_file.py::test_first FAILED                                    [100%]
test_first_file.py:2 (test_first)
5 != 4Expected :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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/907247.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解惑:采购时亚克力板尺寸一般有多少?-郑州亚克力制品代加工-郑州水晶字logo代加工-亚克力切割雕刻-外协加工-委外加工-激光代加工-河南郑州-芯晨微纳(河南)

亚克力板的常规尺寸因生产厂家、用途和工艺(如挤出板或浇铸板)而有所不同,以下是常见的规格参考:厚度范围挤出板:通常为 1mm–10mm,部分厂家可生产更厚(如12mm、15mm)。 浇铸板:厚度范围更广,常见 1mm–50mm,特殊需求可定制更厚板材。常见标准厚度(单位:mm): 1、…

微服务引擎 MSE 及云原生 API 网关 2025 年 2 月产品动态

微服务引擎 MSE 及云原生 API 网关 2025 年 2 月产品动态

性能测试的基本理论

一、性能测试介绍 1、什么叫做性能测试?(1)通过某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试 (2)指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试2、性能测试的时间?在功能测试完成后才能进行性能测试3、…

服务器备份资料,怎么给服务器备份资料

在数字化时代,服务器承载着企业大量的关键数据,从客户信息、业务文档到重要的应用程序和数据库,这些数据是企业运营和发展的核心资产。一旦数据丢失或损坏,可能会给企业带来严重的经济损失和业务中断风险。因此,给服务器备份资料成为了保障数据安全的关键举措。以下将详细…

免去繁琐的手动埋点,Gin 框架可观测性最佳实践

本文将着重介绍 Gin 框架官方推荐的几种可观测性方案并进行对比,从而得出 Gin 框架可观测性的最佳实践。作者:牧思 背景 在云原生时代的今天,Golang 编程语言越来越成为开发者们的首选,而对于 Golang 开发者来说,最著名的 Golang Web 框架莫过于 Gin [ 1] 框架了,Gin 框架…

深入浅出WPF命令系统之InputBinding(MouseBinding与KeyBinding)

之前的随笔中剖析了WPF命令系统的一部分,文中是通过CommandBinding或Binding两种方式将命令(ICommand)与Button控件关联,如下: 方式一,CommandBinding1 <Window.Resources>2 3 <RoutedCommand x:Key="MyTestCommand"/>4 5 </Window.Resou…

20241217 实验二《Python程序设计》实验报告

20241217 2024-2025-2 《Python程序设计》实验二报告 课程:《Python程序设计》 班级: 2412 姓名: 黄迅 学号:20241217 实验教师:王志强 实验日期:2025年3月26日 必修/选修: 公选课 一、实验内容 1.设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善; …

教师教学质量分析评价系统 A教育大模型

教师教学质量分析评价系统基于YOLOv12+RNN的深度学习算法,教师教学质量分析评价系统精准地检测到学生是否在玩手机、举手、睡觉、交头接耳、趴桌子、行走运动等行为。同时,该模型还能够捕捉学生的情绪表情,如开心、厌恶、愤怒、悲伤、沮丧、恐惧、无表情等。这些行为和表情数…

服务器数据备份方法,服务器数据备份方法推荐

在当今数字化浪潮中,服务器宛如企业运营的“数据心脏”,承载着海量核心数据。一旦数据丢失,企业可能面临难以估量的损失。从财务报表到客户信息,从业务文档到关键代码,这些数据的安全维系着企业的生命线。因此,选择有效的服务器数据备份方法,成为企业数据管理的重中之重…

nocoding-codes-xxt

// UserScript // @name 🐮ABC 网课助手|超星学习通|智慧树|🚀自动答题|▶️一键操作|🏆超全题库(每日更新、自动收录)|支持划词搜题 // @namespace oolikeABC // @version 3.2.3 // @author oolikeABC // @description 【🥇懒人操作】…