Pytest测试实战|执行方式

Pytest测试实战

The pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries. 这段话很好地阐述了Pytest的设计思想与强大的特性。在之前阐述了Pytest编写测试用例规范与搜索规则,本文章详细地阐述下Pytest测试框架执行方式特性。

Pytest执行方式

从研发规范与统一性角度而言,建议把所有的测试用例都存储在test的包下,这样在一个包下面就会有很多的测试模块,测试模块中可以编写测试函数(测试方法)。在Pytest测试框架中,针对执行的方式主要有按包执行方式、按模块执行方式、按类执行方式、按函数(方法)执行方式。下面结合案例详细地阐述下这四种执行的方式。以登录接口为案例进行演示这部分的实际应用。在test包下创建test_login.py的模块,整体目录结构如下所示。

图片

测试模块中的源码具体如下:


import pytestimport requestsdef test_login():r=requests.post(url='http://0.0.0.0:8000/login/auth/',json={"username":"13484545195","password":"asd888"},headers={'Content-Type':"application/json"})assert r.status_code==200assert r.json()['user']['telephone']=='13484545195'

如果按包的执行方式,就会执行包下所有测试模块里面所有符合执行条件的测试函数(测试方法),执行的命令具体如下:

 pytest -s -v test/

执行后的结果信息如下所示。

如果是使用模块执行的方式,就需要指定包下具体需要执行的测试模块,执行的命令如下:

pytest -s -v test/test_login.py

如果是按照测试函数的执行方式,就需要指定测试模块下具体的测试函数,执行的命令为:

pytest -s -v test/test_login.py::test_login

执行测试模块里面的不管是测试函数还是测试类,都需要在测试模块后面加::的模式。对代码进行改造下,增加测试类,完善后的测试代码如下:

 

import pytestimport requestsdef test_login():r=requests.post(url='http://0.0.0.0:8000/login/auth/',json={"username":"13484545195","password":"asd888"},headers={'Content-Type':"application/json"})assert r.status_code==200assert r.json()['user']['telephone']=='13484545195'class TestPlatform():def test_login(self):r = requests.post(url='http://0.0.0.0:8000/login/auth/',json={"username": "13484545195", "password": "asd888"},headers={'Content-Type': "application/json"})assert r.status_code == 200assert r.json()['user']['telephone'] == '13484545195'@pytest.fixture()def login(self):r = requests.post(url='http://0.0.0.0:8000/login/auth/',json={"username": "13484545195", "password": "asd888"},headers={'Content-Type': "application/json"})return r.json()['token']def test_index(self,login):r=requests.get(url='http://0.0.0.0:8000/interface/index',headers={'Authorization':'JWT {login}'.format(login=login)})assert r.status_code==200

下来演示下按类的方式来执行测试用例,执行的命令具体如下:

pytest -s -v test/test_login.py::TestPlatform

这样执行后,就会执行测试类中所有的测试用例,执行后的结果信息如下:

图片

但是如果只想执行测试类中某一个测试方法,那么执行的命令为:

pytest -s -v test/test_login.py::TestPlatform::test_index

这样执行后就只会执行被指定的测试方法,执行后的结果信息如下:

在实际的企业里面,一般执行的方式都是以包的执行方式,很少使用类执行方式或者是具体的某个函数作为执行方式,这是因为在企业级里面,需要思考的是批量执行,这样以包的方式来进行执行,就能够达到需要的策略与目标。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

R包:gplots经典热图

加载R包 # install.packages("gplots")library("gplots")数据 mat <- matrix(rnorm(1200), ncol6)画图1 heatmap.2(xmat)画图2 heatmap.2(xmat, ColvFALSE, dendrogram"row",scale"row",col"bluered",trace"non…

828华为云征文 | 解锁企业级邮件服务,在华为云Flexus x实例上部署Mailcow开源方案

前言 华为云Flexus X实例携手Mailcow开源邮件方案&#xff0c;为企业打造了一个既高效又安全的邮件服务解决方案。Flexus X实例的柔性算力与高性能&#xff0c;是这一方案的坚实基石。它提供CPU内存的灵活定义&#xff0c;以经济型价格实现旗舰级性能&#xff0c;确保邮件服务的…

大模型分布式训练并行技术(一)-概述

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此&#xff0c;我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群&a…

Gitee基本指令操作

目录 1.概念 2. git的基本指令 3. .gitignore 文件 4 . Linux git || gitee || github 1.概念 Git是一种版本控制的软件。 Git是免费且开源的。 Git常被称为 去中心化的分布式的 数据存储。 【其实git也可以进行本地版本控制。对于git&#xff0c;可理解为是一个 本地版本…

超轻量级电竞体验,还有8K超高回报率,雷柏VT1 Air MAX上手

PC玩家想要获得更精彩的游戏体验&#xff0c;除了要关注主机上显卡、CPU等方面的配置&#xff0c;还需要键、鼠标的操控体验跟得上节奏&#xff0c;而在这方面&#xff0c;国产品牌雷柏算是行业里的翘楚&#xff0c;尤其是这两年&#xff0c;连续不断的推出了多个电竞系列鼠标&…

3. 函数

函数是 JavaScript 编程中最重要的工具之一。用一个值封装一段程序的概念有很多用途。它为我们提供了一种结构化大型程序的方法&#xff0c;可以减少重复&#xff0c;将名称与子程序关联起来&#xff0c;并将这些子程序相互隔离。 函数最明显的应用是定义新的词汇。在散文中创造…

2024 天池云原生编程挑战赛决赛名单出炉,冠军来自中山大学、昆仑数智战队

9 月 20 日&#xff0c;2024 天池云原生编程挑战赛决赛答辩完美落幕&#xff0c;12 支进入决赛的团队用精彩的答辩&#xff0c;为历时 3 个月的大赛画下了圆满的句号。其中&#xff0c;来自中山大学的陈泓仰以及来自昆仑数智的冉旭欣、沈鑫糠、武鹏鹏&#xff0c; 以出色的方案…

Nordic软件二[蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题][BSP代码模块修改管脚和相关机制]

蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题 本文摘录于&#xff1a;https://blog.csdn.net/chengbaojin/article/details/103778150只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 先参考上面的文章做如下修改: …

中国科学院云南天文台博士招生目录

中国科学院云南天文台是专业基础研究与应用研究结合的综合性天文研究机构&#xff08;其前身是1938年中央研究院天文研究所在昆明东郊凤凰山创建的凤凰山天文台&#xff09;&#xff0c;总部在云南省昆明市&#xff0c;设有两个观测站&#xff08;丽江高美古天文观测站和澄江抚…

使用通义灵码,参与开源项目全程纪实

作者&#xff1a;shuipin100-34561 背景 缘起 OceanBase。作为一个充满好奇心的 DBA&#xff0c;一直一来想探寻数据库的内部世界。开源为我们这些好奇的猫打开了一扇新世界的大门。OceanBase 作为分布式关系型数据库的排头兵&#xff0c;自然进入了我的优选名单。起初走进了…

ComfyUI中缺失节点安装一点小小注意事项

加载工作流&#xff0c;遇到了红当当的缺失节点警告窗口&#xff1a; 在ComfyUI-Manager点击安装缺失节点&#xff0c;发现竟然弹出4个&#xff0c;而上面告警窗口中只是缺失3个&#xff0c;究竟是怎么回事呢&#xff0c;刚开始接触ComfyUI时&#xff0c;我也是不管3721&#x…

04 面部表情识别:Pytorch实现表情识别-表情数据集训练代码

总目录:人脸检测与表情分类 https://blog.csdn.net/whiffeyf/category_12793480.html 目录 0 相关资料1 面部表情识数据集2 模型下载3 训练0 相关资料 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码):https://blog.csdn.net/guyuealian/article/details/1…

【c语言数据结构】超详细!模拟实现双向链表(初始化、销毁、头删、尾删、头插、尾插、指定位置插入与删除、查找数据、判断链表是否为空)

特点&#xff1a; 结构&#xff1a;指向前一结点指针数据指向后一结点指针由于循环&#xff0c;尾结点的下一结点next指向头结点&#xff08;哨兵结点&#xff09;空的双向链表只有自循环的哨兵结点&#xff08;头结点&#xff09; 模拟实现双向链表 LIST.h #define _CRT_…

【WorldView系列卫星】

WorldView系列卫星 WorldView系列卫星是美国DigitalGlobe公司推出的一系列先进商业遥感卫星&#xff0c;旨在提供高分辨率的地球成像服务。该系列卫星以其卓越的成像能力&#xff0c;如高分辨率、快速重访时间和宽幅扫描能力&#xff0c;引领了地球观测技术的新标准。以下是对…

最新版C/C++通过CLion2024进行Linux远程开发保姆级教学

目前来说&#xff0c;对Linux远程开发支持相对比较好的也就是Clion和VSCode了&#xff0c;这两个其实对于C和C语言开发都很友好&#xff0c;大可不必过于纠结使用那个&#xff0c;至于VS和QtCreator&#xff0c;前者太过重量级了&#xff0c;后者更是不用说&#xff0c;主要用于…

110Redis 简明教程--Redis 数据类型

Redis strings 字符串是一种最基本、最常用的 Redis 值类型。 Redis 字符串是二进制安全的&#xff0c;这意味着一个 Redis 字符串能包含任意类型的数据&#xff0c;例如&#xff1a; 一张经过 base64 编码的图片或者一个序列化的 Ruby 对象。通过这样的方式&#xff0c;Redis …

双亲委派机制SPI

SPI如何破坏双亲委派机制&#xff1f;可根据以下概念一步步深入 什么是双亲委派机制&#xff1f; 双亲委派机制是Java类加载器体系中采用的一种类加载策略&#xff0c;旨在保证类加载的安全性和稳定性。 这一机制规定了类加载的顺序和规则&#xff0c;即当一个类加载器收到类…

创建单链表

一、完成单链表操作&#xff0c;要求节点构造类型。 1、建立学生结构体&#xff08;学号&#xff0c;姓名&#xff0c;成绩&#xff09; 2、循环调用头插法创建整表 3、遍历单链表 4、任意位置插入一个完整的学生信息 5、任意位置删除一个学生。 6、单链表逆置 7、单链表按照学…

SpringBoot框架在文档管理中的创新应用

第3章 系统分析 3.1 需求分析 在线文档管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足员工&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑员工的可操作性&#xff0c;遵循…

ELK-03-skywalking监控linux系统

文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后&#xff0c;开始我们的第一个监控-监控linux系统。 参考官方文档&a…