10.接口自动化测试学习-Pytest框架(2)

news2024/10/6 14:33:34

1.mark标签

如果在每一个模块,每一个类,每一个方法和用例之前都加上mark标签,那么在pytest运行时就可以只运行带有该mark标签的模块、类、接口。

这样可以方便我们执行自动化时,自主选择执行全部用例、某个模块用例、某个流程用例

2.-m 选择对应的标签

一个:'-m','lesson_add(标签名)'
多个:'-m','lesson_add or lesson_list(标签名)'
排除法:'-m','not lesson_add(标签名)'
排除法多个:'-m','not (lesson_add or lesson_list(标签名))'

eg:只执行shop_list接口的相关用例

import pytest,allure,os
from libs.login import Login
from utils.handle_excel import get_excel_data
from utils.handle_path import report_path
from utils.handle_path import data_path
from common.baseApi import BaseAssert
#TestLogin继承BaseAssert

class TestShop(BaseAssert):
    @pytest.mark.parametrize('inBody,expData', get_excel_data('商铺模块', 'Listshop','请求参数','响应预期结果'))
    @pytest.mark.shop_list
    def test_shop_list(self,inBody,expData,shop_init):#shop_init初始化操作
        # 1.调用业务层封装的接口代码
        res=shop_init.query(inBody)
        # 2.断言实际返回结果与预期结果
        self.define_assert(res['code'],expData['code'])
  
if __name__ == '__main__':
    pytest.main([__file__,'-sv','-m','shop_list','--alluredir',report_path,'--clean-alluredir'])
    os.system(f'allure serve {report_path}')

如果出现如下图的警告,说明我们自己取得标签名系统不承认,则需要在ini文件中进行配置,在pycharm中安装ini插件
直接写mark标签,会有警告

pytest.ini—去除警告

[pytest]
markers=
    login: Run login case
    shop: Run shop case
    shop_list:Run shop_list case
    shop_update:Run shop_update case

3.pytest其他用法

-k:匹配用例名称

pytest -k shop #带有shop的接口用例都会执行
  • 匹配:可全名,也可以模糊
    若有lesson1.py lesson2.py
  • pytest -k lesson
    会运行两个文件

-v:节点(多层化)

pytest -v test_shop.py::TestShop::test_shop_list
  • ::代表层级,上述命令表示执行test_shop模块下的TestShop类里的test_shop_list中的全部用例
  • 示例:test_lesson.py::TestLesson::test_lesson_add
  • pytest -v test_lesson.py::TestLesson::test_lesson_add

-sq:简化打印信息

  • -s:输出打印
  • -q:简化打印信息

跳过/条件跳过

  • 当功能未实现、功能阻塞等因素导致一些用例暂时不能执行,就可以金属跳过skip用例,相当于注释的效果
  • 写法应用
import pytest,allure,os
from common.baseApi import BaseAssert

@pytest.mark.skip(reason='该模块暂时不要运行')
class TestShop(BaseAssert):
    @pytest.mark.parametrize('inBody,expData', get_excel_data('商铺模块', 'Listshop','请求参数','响应预期结果'))

    def test_shop_list(self,inBody,expData,shop_init):#shop_init初始化操作
        # 1.调用业务层封装的接口代码
        res=shop_init.query(inBody)
        # 2.断言实际返回结果与预期结果
        self.define_assert(res['code'],expData['code'])
    @pytest.mark.parametrize('inBody,expData', get_excel_data('商铺模块', 'Updateshop','请求参数','响应预期结果'))
    
if __name__ == '__main__':
    pytest.main([__file__,'-sv','--alluredir',report_path,'--clean-alluredir'])
    os.system(f'allure serve {report_path}')

  • 有条件的跳过 -skipif,if条件为真,就跳过该用例
    eg:当运行环境为Windows 版本为2.2.2跳过
  • 写法
@pytest.mark.skipif(1==2,reason='条件满足就跳过')

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

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

相关文章

indexDB 大图缓存

背景 最近在项目中遇到了一个问题:由于大屏背景图加载速度过慢,导致页面黑屏时间过长,影响了用户的体验。从下图可以看出加载耗时将近一分钟 IndexDB 主要的想法就是利用indexDB去做缓存,优化加载速度;在这之前&am…

自动驾驶传感器篇: GNSSIMU组合导航

自动驾驶传感器篇: GNSS&IMU组合导航 1.GNSS1.1 GNSS 系统概述1.2 GNSS系统基本组成1. 空间部分(Space Segment):2. 地面控制部分(Ground Control Segment):3. 用户设备部分(Use…

python爬虫-----深入了解 requests 库下篇(第二十六天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

电影交流|基于SprinBoot+vue的电影交流平台小程序系统(源码+数据库+文档)

电影交流平台目录 目录 基于SprinBootvue的电影交流平台小程序系统 一、前言 二、系统设计 三、系统功能设计 1用户信息管理 2 电影信息管理 3公告信息管理 4论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取…

Oracle delete删除数据是否为逻辑删除、新插入数据占用的数据块位置实验

假设一:数据库delete删除为直接删除 假设二:数据库delete删除为逻辑删除,在数据块标记出来,但是实际并没有删除。 方式一:通过dump数据块的方式来实现 我们先用小数据量,通过dump数据块的方式来实现 -- 数…

Activity界面什么都不显示怎么解决

如图,有可能是你重写错了方法,两个onCreate方法非常像,参数不同,正确方法如下:

003基于SSM的学生选课系统(学生信息管理系统)ssm+mysql

003基于SSM的学生选课系统/学生信息管理系统 开发环境: Eclipse/MyEclipse、Tomcat8、Jdk1.8 数据库: MySQL 前端:JavaScript、jQuery、bootstrap4、particles.js 后端:maven、SpringMVC、MyBatis、ajax、mysql读写分离、mybat…

共享购:融合社交分享与消费返利的创新电商模式

共享购电商模式是一种独特的商业模式,巧妙地将社交分享与消费返利结合,让消费者在购物的同时,也能通过平台资产奖励实现价值的双重增长。该平台资产体系主要由共享值和共享积分两大要素构成,共同构建了一个充满活力的电商生态系统…

C++中布隆过滤器

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

【网络原理】TCP协议的连接管理机制(三次握手和四次挥手)

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序(万字博文) 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制(CRC算法、MD5算法) 【网络…

Linux的FTP服务

目录 1.什么是FTP服务? 2.FTP的工作原理和流程 1 主动模式 2 被动模式 3.搭建和配置FTP服务 1 下载服务包、备份配置文件 2 修改配置文件​编辑 3 匿名访问测试 4 设置黑白命令 1.什么是FTP服务? FTP(file Transfer Protocol&#…

Baidu comate智能编程助手评测

Baidu comate智能编程助手评测 作者:知孤云出岫 目录 一. 关于comate产品 二. 关于comate产品体验 三. 关于实际案例. 四. 关于baidu comate编程助手的实测体验感悟 五. …

(三)登录和注册(handle_auto.go)

登录和注册(handle_auto.go) 文章目录 登录和注册(handle_auto.go)一、所需要的结构体信息二、注册三、登录四、退出 一、所需要的结构体信息 type UserAuth struct{}type LoginReq struct {Username string json:"username" binding:"required"Password …

面试经典150题——求根节点到叶节点数字之和

​ 1. 题目描述 2. 题目分析与解析 2.1 思路一——DFS 理解问题: 首先要理解题目的要求,即对于给定的二叉树,我们需要找出从根节点到所有叶子节点的所有路径,然后将每一条路径上的数字组成一个整数,最后求出这些整数…

【静态分析】静态分析笔记08 - 指针分析 - 上下文敏感

参考: 【课程笔记】南大软件分析课程8——指针分析-上下文敏感(课时11/12) - 简书 ------------------------------------------------------------------------------------------------------------- 1. 上下文不敏感的问题 说明&#…

最详细步骤解决:Apps targeting Android12 and higher are required to specify...

问题原因: 当targetSdkVersion>31时,需要在AndroidManifest.xml中配置android:exported的值,该值为boolean类型。 android:exported解释: activity 是否可由其他应用的组件启动: 如果设为 "true"&#…

python中开发页面的两种方法:Qt Designer(PyQt图形化界面拖拽开发App界面)以及Django(开发Web应用框架)

一、开发独立的窗口,App的那种,可使用tkinter或者PyQt 使用PyQt时,里面有个工具Qt Designer,是一个可视化的界面设计工具,可以通过拖拽等方式来设计界面。下面就是Qt Designer的操作界面: 参考链接如下&am…

Linux——web建立wordpress

下载 [rootnfs-server ~]# yum install php wget https://wordpress.org/latest.tar.gz解压 /var/www/html [rootnfs-server html]# tar -xzvf latest.tar.gz [rootnfs-server html]# rm latest.tar.gz授权 [rootnfs-server html]# chown -R www:www /var/www/html添加文件备…

智能解决装箱问题:使用优化算法实现高效包装

组合优化问题 组合优化(Combinatorial Optimization,CO)数学优化研究的一个分支。主要关注的是从有限的对象集合中寻找最优解的问题。这个词的由来主要是由“组合”和“优化”两部分构成。“组合”指的是从有限的对象集合中选择一部分的过程…

1-内核开发环境ubuntu+virtualbox+mobaXterm搭建

内核开发环境 ubuntuvirtualboxmobaXterm搭建 目录 内核开发环境 ubuntuvirtualboxmobaXterm搭建 1.virtualbox 安装 2.ubuntu 安装 3.网络设置 4.虚拟机安装ssh 服务,更新ubuntu 源安装基本软件 5.mobaXterm 个人免费版本安装 6.总结 本课程教程从0-1开始教…