技术面没过,居然是因为没用过Pytest框架

01 概述

pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:

简单灵活,容易上手,文档丰富;

支持参数化,可以细粒度地控制要测试的测试用例;

能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);

pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;

测试用例的skip和xfail处理;

可以很好的和CI工具结合,例如jenkins

02 使用介绍

安装:pip install pytest

1、示例代码

编写规则:编写pytest测试样例非常简单,只需要按照下面的规则:

测试文件以test_开头(以_test结尾也可以)

测试类以Test开头,并且不能带有 init 方法

测试函数以test_开头

断言使用基本的assert即可

pytest1.py

在这里插入图片描述

fixture的scope参数

scope参数有四种,默认为function

function:每个test都运行,默认是function的scope

class:每个class的所有test只运行一次

module:每个module的所有test只运行一次

session:每个session只运行一次

setup和teardown操作

setup,在测试函数或类之前执行,完成准备工作,例如数据库链接、测试数据、打开文件等

teardown,在测试函数或类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等

备注:

也可以通过在fixture函数中通过yield实现setup和teardown功能

图片

2、测试结果

如何执行

在这里插入图片描述

通过pytest.mark对test方法分类执行

通过@pytest.mark控制需要执行哪些feature的test,例如在执行test前增加修饰

@pytest.mark.website

通过 -m “website” 执行有website标记的test方法

$ pytest  -v -m "website" pytest1.py

============================================================================== test session starts ===============================================================================platform linux2 -- Python 2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1 -- /home/kevin/soft/anaconda2/bin/python

cachedir: .cacheUsing --randomly-seed=1522925202rootdir: /home/kevin/learn/python-web/tox/case2, inifile:plugins: randomly-1.0.0, mock-1.2, cov-2.0.0collected 3 items

pytest1.py::test_1 PASSED

============================================================================= pytest-warning summary =============================================================================WC1 None pytest_funcarg__cov: declaring fixtures using "pytest_funcarg__" prefix is deprecated and scheduled to be removed in pytest 4.0.  Please remove the prefix and use the @pytest.fixture decorator instead.=============================================================================== 2 tests deselected ========================================================================================================================================== 1 passed, 2 deselected, 1 pytest-warnings in 0.00 seconds ============================================================

通过 -m “not website” 执行没有website标记的test方法

$ pytest  -v -m "not website" pytest1.py

============================================================================== test session starts ===============================================================================platform linux2 -- Python 2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1 -- /home/kevin/soft/anaconda2/bin/python

cachedir: .cacheUsing 

--randomly-seed=1522925192rootdir: /home/kevin/learn/python-web/tox/case2, inifile:plugins: randomly-1.0.0, mock-1.2, cov-2.0.0collected 3 items

pytest1.py::test_3 PASSED

pytest1.py::test_2 PASSED============================================================================= pytest-warning summary =============================================================================WC1 None pytest_funcarg__cov: declaring fixtures using "pytest_funcarg__" prefix is deprecated and scheduled to be removed in pytest 4.0.  Please remove the prefix and use the @pytest.fixture decorator instead.=============================================================================== 1 tests deselected ========================================================================================================================================== 2 passed, 1 deselected, 1 pytest-warnings in 0.00 seconds ============================================================

Console参数介绍

-v 用于显示每个测试函数的执行结果

-q 只显示整体测试结果

-s 用于显示测试函数中print()函数输出

-x, --exitfirst, exit instantly on first error or failed test

-h 帮助

Case 1

$ pytest -v pytest1.py

============================================================================== test session starts ===============================================================================

platform linux2 -- Python 2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1 -- /home/kevin/soft/anaconda2/bin/python

cachedir: .cache

Using --randomly-seed=1522920341

rootdir: /home/kevin/learn/python-web/tox/case2, inifile:

plugins: randomly-1.0.0, mock-1.2, cov-2.0.0

collected 3 items

pytest1.py::test_1 PASSED

pytest1.py::test_3 PASSED

pytest1.py::test_2PASSED

============================================================================= pytest-warning summary =============================================================================WC1 None pytest_funcarg__cov: declaring fixtures using "pytest_funcarg__" prefix is deprecated and scheduled to be removed in pytest 4.0.  Please remove the prefix and use the @pytest.fixture decorator instead.================================================================== 3 passed, 1 pytest-warnings in 0.01 seconds ===================================================================

Case 2

$ pytest -s pytest1.py

============================================================================== test session starts ===============================================================================

platform linux2 -- Python 2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1

Using --randomly-seed=1522920508

rootdir: /home/kevin/learn/python-web/tox/case2, inifile:

plugins: randomly-1.0.0, mock-1.2, cov-2.0.0

collected 3 items

pytest1.py setup_function called.Test_1 

called..teardown_function called.setup_module called.Test_2 called..Test_3 called..teardown_module called.============================================================================= pytest-warning summary =============================================================================WC1 None pytest_funcarg__cov: declaring fixtures using "pytest_funcarg__" prefix is deprecated and scheduled to be removed in pytest 4.0.  Please remove the prefix and use the @pytest.fixture decorator instead.================================================================== 3 passed, 1 pytest-warnings in 0.01 seconds ===================================================================

03 扩展插件

测试报告

安装与样例

pip install pytest-cov   # 计算pytest覆盖率,支持输出多种格式的测试报告
pytest --cov-report = html --cov = ./ test_code_target_dir

Console参数介绍

–cov=[path], measure coverage for filesystem path (multi-allowed)

指定被测试对象,用于计算测试覆盖率

–cov-report=type, type of report to generate: term, term-missing, annotate, html, xml (multi-allowed)

测试报告的类型

–cov-config=path, config file for coverage, default: .coveragerc, coverage

配置文件

–no-cov-on-fail, do not report coverage if test run fails, default: False

如果测试失败,不生成测试报告

–cov-fail-under=MIN, Fail if the total coverage is less than MIN.

如果测试覆盖率低于MIN,则认为失败

Console Result

---------------------------------------------------------------- coverage: platform linux2, python 2.7.14-final-0 ----------------------------------------------------------------
Name         Stmts   Miss  Cover
--------------------------------
pytest1.py      18      0   100%

Html Result

在这里插入图片描述

测试顺序随机

pip install pytest-randomly
  • 1

分布式测试

pip install pytest-xdist
  • 1

出错立即返回

pip install pytest-instafail
  • 1

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们 如果需要可以自行免费领取 【保证100%免费】
在这里插 入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

相机,棱镜和光场

一、成像方法 Imaging Synthesis Capture 1.Synthesis(图形学上)合成:比如之前学过的光线追踪或者光栅化 2.Capture(捕捉):把真实世界存在的东西捕捉成为照片 二、相机 1.小孔成像 利用小孔成像的相…

MES系统在离散制造企业中的功能解析

随着信息技术的快速发展和制造业的转型升级,MES在离散制造企业中的作用日益凸显。MES系统不仅提高了生产效率和产品质量,还优化了资源配置,增强了企业的市场竞争力。 一、生产管理功能 MES系统能够实时监控生产现场的各种数据,包…

【SQL】608. 树节点(流控制语句 CASE + IF语句)

前述 知识点推荐学习: sql中的 IF 条件语句的用法 MySQL:if语句、if…else语句、case语句,使用方法解析 题目描述 leetcode 题目:608. 树节点 思路 关键点:如何确定有没有子节点 根节点:父节点为空内节…

FreeRTOS任务管理(创建、删除、挂起、恢复)

目录 一、任务概念 二、系统启动与空闲任务 三、任务创建 四、任务删除 五、任务挂起 六、任务恢复(普通模式和中断模式) 七、任务管理编程实战 一、任务概念 1、任务的基本概念 从系统的角度看,任务是竞争系统资源的最小运行单元 …

Flutter(三):Stack、Positioned、屏幕相关尺寸、Navigator路由跳转

页面尺寸 通知栏高度:MediaQuery.of(context).padding.top顶部导航高度:kToolbarHeight底部导航高度:kBottomNavigationBarHeight屏幕宽:MediaQuery.of(context).size.width屏幕高:MediaQuery.of(context).size.height…

基于STM32制作的示波器(可对任意信号进行描点)

基于STM32制作的示波器(可对任意信号进行描点) 注意:用的屏幕是TFT-LCD(MCU 屏)正点原子同款屏幕 液晶显示器,即 Liquid Crystal Display,利用了液晶导电后透光性可变的特性,配合显…

2024洗地机选购攻略 | 洗地机好用吗?洗地机如何挑选?

在众多清洁工具中,洗地机以其卓越的清洁能力和便捷的操作方式,获得了广泛关注。2024年,市场上涌现出众多品牌的洗地机,但哪些品牌的洗地机值得推荐呢?在这里,我们将详细探讨几个备受好评的洗地机品牌&#…

Fisher矩阵与自然梯度法

文章目录 Fisher矩阵及自然梯度法Fisher矩阵自然梯度法总结参考链接 Fisher矩阵及自然梯度法 自然梯度法相比传统的梯度下降法具有以下优势: 更好的适应性:自然梯度法通过引入黎曼流形上的梯度概念,能够更好地适应参数空间的几何结构。这使…

向上生长笔记

第一章 成为一个很厉害的人(持续输入,反复练习) 为什么要学习及如何学习 1、自毁趋势(熵增),故需要能量输入(负熵流) //引申:水往低处流是趋势,学习是逆趋势。 2、持续输入能量(物质和信息),…

BUUCTF---[ACTF2020 新生赛]BackupFile1

1.题目描述 2.题目提示backup file ,是备份文件的意思。点开链接,页面提示 3.查看源码没有什么有用信息,也没有登录界面,所以也不会用到蚁剑链接来找备份文件,所以大概率就是通过构造playload来查找备份文件。 4.备份…

vue+element ui上传图片到七牛云服务器

本来打算做一个全部都是前端完成的资源上传到七牛云的demo,但是需要获取token,经历了九九八十一难,最终还是选择放弃,token从后端获取(springboot)。如果你们有前端直接能解决的麻烦记得私我哦!…

详解自动化测试框架特点和原理

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程,一周学完让你面试通过率提高90%!(自动化测试) 今天捡一些比较典型的工具型自动化框架来介绍,主要围绕历史、特点和原理来讲解,至于使用教程…

MYSQL07高级_Hash结构、平衡二叉树、B树、B+树介绍

文章目录 ①. 全表遍历②. Hash结构③. 平衡二叉搜索树(AVL)④. B树⑤. B树⑥. 时间复杂度 选择的合理性 磁盘的I/O操作次数对索引的使用效率至关重要查找都是索引操作,一般来说索引非常大,尤其是关系型数据库,当数据量比较大的时候,索引的大小有可能几个G甚至更多,为了减少索引…

BUUCTF---[BJDCTF2020]藏藏藏1

1.题目描述 2.下载附件,解压之后是一张图片和一个文本 3.把图片放在winhex,发现图片里面包含压缩包 4.在kali中使用binwalk查看,然后使用foremost分离,在使用tree查看分离出来的文件,最后将zip文件使用unzip进行解压。步骤如下 5.…

分巧克力 刷题笔记

/* 分巧克力 解题思路 二分 直接检查看答案是否符合题目条件 对于一块边长分别为x 和y的巧克力\\ 假设我们输入检查的数为k 其能分割成的 k*k 的巧克力的块数为 (x/k)*(y/k) 因为c里面的除法是下取整的所以我们不用考虑奇偶数 是否能整除 将每一块巧克力能分成的k*k的巧克力…

镭速:推动工业设备数据高效汇聚的关键力量

在工业4.0时代,智能制造和工业自动化的快速发展使得工业设备数据汇聚、采集、传输变得尤为重要。这些数据,包括设备运行状态、生产效率、能耗等关键信息,对于企业优化生产流程、提升产品质量、降低成本具有至关重要的作用。然而,在…

jsp阿帕奇安装教程

1.将压缩包解压,存放在自己所知道的位置 2.将软件文件夹打开 使用winr ,输入cmd运行打开 输入Java或者Javac,出现一大串之后表明成功 接着在所解压的软件中点开bin这个文件夹,找到startup.bat点击 点击之后会出现黑框&#xff0c…

Mint_21.3 drawing-area和goocanvas的FB笔记(三)

一、改变goocanvas线条自动画线时间间隔 通过系统SIGALRM信号触发,每秒画一条线对于慢温湿度等慢变信号可以应付,但对于快速信号1秒的间隔就太慢了。可以改变方式,通过另外的线程,完成要做的任务。 1. 线程的回调函数 myfunc 2…

javaWebssh酒店客房管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh酒店客房管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0…

都2024了,软件测试真的就是简单的点点点吗???

软件测试真的就是用手点点这么简单 你的身边,是否有这样一片景象? A:写了几年代码,写不下去了,听说测试很好上手,先来做几年测试 。 B:小文员一枚,想入行 IT,听说测试入门简单,请…
最新文章