pytest自动化测试[面试篇]

pytest是python的测试框架,它提供了许多功能,

测试运行

组织pytest的测试用例代码:模块名称以test_开头,类名以Test开头,函数名以test_开头, 然后用pytest命令即可运行测试用例。

  • 可以在命令行中,用pytest命令运行
  • 也可以在代码中,用pytest.main()运行

api自动化测试实现

  1. 第一步:通过代码编写,最终需要在测试用例,test_开头的函数中,对接口进行请求,然后断言
  2. 第二步:pytest运行时,就可以批量调接口api, 使用**–aluredir**参数,可以生成allure的测试报告
  3. 第三步:代码集成到git和jenkins中,代码最后在jenkins里面,运行pytest命令,allure的测试报告存在Jenkins的workspace中
    再结合Jenkins的allure插件可以在Jenkins中,查看历史测试报告。 最后可以设置Jenkins的邮件(钉钉)通知,发送报告。

具体代码实现

  1. 代码目录下有一个libs 目录(业务层), 一个功能模块写成一个py文件。 然后去封装接口,pytest测试用例方法,再调用libs层封装方法
  2. a【各个模块的请求方法、url 集中存在一个yaml文件中】 b【请求参数,预期值,是放到excel中的】
    • 业务层的业务类继承了BaseApi基类,也是自己封装的,提供了请求方法--------它可以获取到对应模块的接口的 method 和 URL
    • 测试用例的类中,每个测试方法那里,首先使用xrld获取到excel文件中对应接口的请求参数。使用 @pytest.mark.parametrize把数据传给测试用例,进行数据驱动。
  3. 初始化和身份校验
    • pytest它支持写初始化和清除的代码,使用@pytest.fixture()装饰器。参数:scope,参数3:autouse
    • 用例testcase目录,添加conftest.py, 里面写了整个项目运行前的初始化,进行登录。并且返回了token。 页面类进行实例化时,会传传入token,页面类请求接口时,会自动带上token。
    • 我在之前公司的实际项目中,也是初始化进行了登录,然后把token保存到配置中-----方式有所不同。

以上pyest部分未提到的一些用法

  1. 测试用例调用初始化方法:
    1. @pytest.fixture(autouse=True) 、
    2. @pytest.mark.usefixtures(“方法名”) 、
    3. 或直接在test_开头的函数中,直接把 fixture定义的方法名当成参数传入。
  2. 装饰器 @pytest.mark.repeat(2) 可以重复运行测试用例。
  3. pytest-assume库提供的,pytest.assume() 断言,如果断言失败,会继续执行,直到全部执行完。
  4. 测试用例方法上,添加@pytest.mark.skipif(True, reason=“跳过原因”),可以跳过用例。 (或 @pytest.mark.skip)
  5. pytest命令运行时,可以添加 -k 参数,指定某个测试用例py模块,或者测试用例类,或者某个测试用例方法。

allure测试报告

安装allure-pytest

  1. allure.attach() 可以添加更多的日志、截图等。
  2. @allure.epic、@allure.feature、@allure.story、@allure.title, 让用例分层。
  3. 使用with allure.step(),可以添加步骤。 若调用外部方法,也可以使用装饰器@allure.step(),装饰在外部方法上

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

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

相关文章

树莓派急速安装ubuntu;映射磁盘与储存磁盘文件;ubuntu映射整个工程;保存系统工作状态

一、用途 在使用树莓派上下载ubuntu时,需要一张sd卡,当你需要给这张卡做备份的时候,可以是使用磁盘映射软件,从而达到备份的目的 同时有一些大佬发布了ubuntu的映射文件,可以直接使用该文件,然后还原他的整…

Python学习第十九天

Django-分页 后端分页 Django提供了Paginator类来实现后端分页。Paginator类可以将一个查询集(QuerySet)分成多个页面,每个页面包含指定数量的对象。 from django.shortcuts import render, redirect, get_object_or_404 from .models impo…

Windows下安装Git客户端

① 官网地址:https://git-scm.com/。 ② Git的优势 大部分操作在本地完成,不需要联网;完整性保证;尽可能添加数据而不是删除或修改数据;分支操作非常快捷流畅;与Linux 命令全面兼容。 ③ Git的安装 从官网…

刷题练习笔记

目录 1、消失的数字 2、旋转数组 3、原地移除元素 4、删除排序数组中的重复项 1、消失的数字 oj:面试题 17.04. 消失的数字 - 力扣(LeetCode) 思路(参考评论区): 利用异或的特性,ret ret …

C或C++中实现数据结构课程中的链表、数组、树和图案例

1. 双向链表&#xff08;Doubly Linked List&#xff09;-----支持双向遍历。 C实现 #include <iostream>struct Node {int data;Node* prev;Node* next; };class DoublyLinkedList { private:Node* head; public:DoublyLinkedList() : head(nullptr) {}// 在链表末尾插…

94.HarmonyOS NEXT动画系统实现教程:深入理解FuncUtils

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT动画系统实现教程&#xff1a;深入理解FuncUtils 文章目录 HarmonyOS NEXT动画系统实现教程&#xff1a;深入理解FuncUtils1. 动画系…

AI日报 - 2025年3月17日

&#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; AGI突破 | GPT-o1在卡内基梅隆大学数学考试中获满分&#xff0c;展示AI数学能力新高度 成本仅5美分/题&#xff0c;推理速度不到1分钟 ▎&#x1f4bc; 商业动向 | Figure推出BotQ机器人制造设施&…

Tauri + Vite + SvelteKit + TailwindCSS + DaisyUI 跨平台开发详细配置指南(Windows)

Tauri Vite SvelteKit TailwindCSS DaisyUI 跨平台开发详细配置指南&#xff08;Windows&#xff09; 本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议。转载请注明出处及本声明 原文链接&#xff1a;[你的文章链接] &#x1f6e0;️ 环境准备 1. 安装核心工具…

在 macOS 上优化 Vim 用于开发

简介 这篇指南将带你通过一系列步骤&#xff0c;如何在 macOS 上优化 Vim&#xff0c;使其具备 代码补全、语法高亮、代码格式化、代码片段管理、目录树等功能。此外&#xff0c;我们还会解决在安装过程中可能遇到的常见错误。 1. 安装必备工具 在开始 Vim 配置之前&#xff…

golang开发支持onlyoffice的token功能

一直都没去弄token这块&#xff0c;想着反正docker run的时候将jwt置为false即可。 看了好多文章&#xff0c;感觉可以试试&#xff0c;但是所有文件几乎都没说思路。 根据我的理解和成功的调试&#xff0c;思路是&#xff1a; 我们先定义2个概念&#xff0c;一个是文档下载…

Android wifi的开关Settings值异常分析

Android wifi的开关Settings值异常分析 文章目录 Android wifi的开关Settings值异常分析一、前言二、异常分析1、adb或者串口获取Settings的wifi开关值2、代码获取wifi开关值3、根据日志分析代码(1)logcat 对应的wifi开启日志的代码①WifiServiceImpl.java② WifiSettingsStore…

C#的委托Action

在 C# 中&#xff0c;Action 是一个预定义的委托类型&#xff0c;它位于 System 命名空间下。下面详细介绍它的作用和使用方法。 作用 Action 委托的主要作用是封装一个方法&#xff0c;这个方法没有返回值&#xff08;即返回类型为 void&#xff09;。它提供了一种简洁的方式…

Qt MainWindow简单例子(文本编辑)

使用Qt控件练习文本编辑窗口的创建。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QLabel> #include <QProgressBar>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public Q…

DeepSeek-prompt指令-当DeepSeek答非所问,应该如何准确的表达我们的诉求?

当DeepSeek答非所问&#xff0c;应该如何准确的表达我们的诉求&#xff1f;不同使用场景如何向DeepSeek发问&#xff1f;是否有指令公式&#xff1f; 目录 1、 扮演专家型指令2、 知识蒸馏型指令3、 颗粒度调节型指令4、 时间轴推演型指令5、 极端测试型6、 逆向思维型指令7、…

Mac中nvm切换node版本失败,关闭终端再次打开还是之前的node

Mac中使用 nvm 管理 node 版本&#xff0c;在使用指令&#xff1a;nvm use XXX 切换版本之后。 关闭终端&#xff0c;再次打开&#xff0c;输入 node -v 还是得到之前的 node 版本。 原因&#xff1a; 在这里这个 default 中有个 node 的版本号&#xff0c;使用 nvm use 时&a…

织梦dedecmsV5.7提示信息提示框美化(带安装教程和效果展示)

一、效果展示 1、安装前效果 2、安装后效果 二、安装说明 1、安装测试版本&#xff1a;DedeCMS-V5.7.117-UTF8&#xff1b; 2、必须在修改代码之前请做好文件备份&#xff0c;以免误操无法恢复&#xff1b; 3、为了兼容其他版本&#xff0c;请在安装时&#xff0c;最好将替…

Science Advances 视触觉传感机制的交互装置,可以实时测量来自手不同部位的分布力

近日&#xff0c;由香港科技大学&#xff08;HKUST&#xff09;电子与计算机工程学系申亚京教授领导的研究团队&#xff0c;提出了一种基于数字通道的触觉交互系统&#xff0c;可以实时测量来自手不同部位的分布力&#xff0c;有望在医学评估、体育训练、机器人和虚拟现实&…

MySQL单表查询大全【SELECT】

山再高&#xff0c;往上攀&#xff0c;总能登顶&#xff1b;路再长&#xff0c;走下去&#xff0c;定能到达。 Mysql中Select 的用法 ------前言------【SELECT】0.【准备工作】0.1 创建一个库0.2 库中创建表0.3 表中加入一些数据 1.【查询全部】2.【查询指定列】2.1查询指定列…

Vue调用子组件init方法时报错Cannot read properties of undefined (reading ‘init‘)解决方法

调用init方法语句写在this.$nextTick(() > {});方法里&#xff0c;因为nextTick方法在页面元素加载完之后调用 this.$nextTick(() > {this.$refs.chartComponent.init();});如果还报错&#xff1a;Error in nextTick: "TypeError: Cannot read properties of undef…

怎么解决在Mac上每次打开文件夹都会弹出一个新窗口的问题

在Mac上每次打开文件夹都会弹出一个新窗口的问题&#xff0c;可以通过以下方法解决‌ ‌调整Finder设置‌&#xff1a; 打开Finder&#xff0c;点击“Finder”菜单&#xff0c;选择“偏好设置”。在偏好设置中&#xff0c;选择“通用”标签。取消勾选“在标签页中打开文件夹”或…