Python自动化测试实战篇(12),一文学完,Pytest 常用11种第三方插件

news2024/9/20 8:12:14

在这里插入图片描述
这些是之前的文章,里面有一些基础的知识点在前面由于前面已经有写过,所以这一篇就不再详细对之前的内容进行描述
Python自动化测试实战篇(1)

Python自动化测试实战篇(2)

Python自动化测试实战篇(3)

Python自动化测试实战篇(4)

Python自动化测试实战篇(5)

Python自动化测试实战篇(6)

Python自动化测试实战篇(7)
Python自动化测试实战篇(8)
Python自动化测试实战篇(9)
Python自动化测试实战篇(10)
Python自动化测试实战篇(11)

pytest第三方插件

先在E盘目录创建一个rep.txt文件
然后cmd进入E盘后
在这里插入图片描述

通过pip3批量安装文件内的插件
pip3 install -r rep.txt
在这里插入图片描述

pytest-django
pytest-ordering
pytest-rerunfailures
pytest-assume
pytest-xdist
pytest-sugar
pytest-cov
pytest-picked
pytest-instafail
pytest-tldr
django-test-plus
pytest-html

1.pytest-django

需要在django进行测试的方法,pytest中也有相应的方法,只需要在django的根目录下创建pytest.ini文件
在这里插入图片描述
再Terminal终端中输入pytest即可遍历所有的文件内的测试用例
如果要单独指定一个即用pytest testxxx.py以test开头的文件即可进行相应的单元测试。

在这里插入图片描述

2.pytest-ordering

设定执行顺序,可以通过ordering来设置执行顺序,从而来制定优先执行那一条测试用例

import pytest

@pytest.mark.run(order=2)
def test_1():
    print("测试1")

@pytest.mark.run(order=1)
def test_2():
    print("测试2")


if __name__ == '__main__':
    pytest.main(["-vs", "t1.py"])

可以看到修改后的测试用例执行顺序发生了改变,测试用例2优先执行

在这里插入图片描述

3.pytest-rerunfailures

失败重跑插件
用法:pytest test_3.py --reruns 2 --reruns-delay 2 -vs
失败后重新跑2次,间隔2秒

import pytest
import requests
url = "http://127.0.0.1:4523/m1/2459729-0-default/registersearch?user=admin&password=123456"

payload={}
headers = {
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Accept': '*/*',
   'Host': '127.0.0.1:4523',
   'Connection': 'keep-alive'
}

@pytest.fixture(autouse=True)
def login(request):
    response = requests.request("GET", url, headers=headers, data=payload)
    print(response.text)
    yield
    print("测试结束")
class TestFixture:
    def test_case001(self,login):
        res = requests.request("GET", url, headers=headers, data=login)
        assert res.status_code == 200
        print("接口连接成功")
        print(res.text)
def test_case002(request):
    print(request)
    print("测试用例2")


if __name__ == '__main__':
    pytest.main(["-vs", "test3.py"])

在终端使用
在这里插入图片描述

4.pytest-assume

断言报错继续执行
当有断言出现错误时将不会继续执行,本插件就是为了让断言能够在出错的情况下继续执行
用法:pytest.assume(3 > 2)

import pytest

def test_assume():
    print("测试1")
    pytest.assume(1 < 2)
    print("测试2")
    pytest.assume(2 > 2)
    print("测试3")
    pytest.assume(3 > 2)
if __name__ == '__main__':
    pytest.main(["-vs", "t1.py"])

在这里插入图片描述

5.pytest-xdist

分布式测试
可调用多个CPU内核进行同时测试
用法:pytest -n 6 表示用6个cpu进行测试
pytest -n auto 表示系统自动检测cpu,会占用所有的cpu
pytest -n auto testxxx.py
终端输入pytest -n auto t1.py
可以看到调用了所有的cpu进行测试

在这里插入图片描述

6.pytest-cov

精准测试,可以显示那些已经测试过,那些还没有被测试过。
也可以用来检验代码覆盖率能够达到多少
用法:pytest --cov
在终端上执行
输出生成html报告
用法:pytest --cov --cov-report=html
然后双击index.html即可看到代码的覆盖率
在这里插入图片描述
点开来看就可以看到未覆盖的代码。

在这里插入图片描述

7.pytest-picked

运行为未提交git的测试用例
用法:pytest --picked

pytest --picked=first首先运行被更改的文件

pytest --picked --mode=branch --parent-branch=main运行分支文件
在这里插入图片描述

8.pytest-instafail

运行用例完成后直接实时打印错误
用法: pytest --instafail

在这里插入图片描述

9.pytest-tldr

简化错误信息,由于乱七八糟的错误信息让人看的眼花缭乱所以需要增加一个结构简单明了的错误信息观察
用法:pytest
关闭tldr:pytest -p no:tldr xxx.py
注意:如果你用了pytest-sugar你又装了tldr那么你的sugar的颜色将不会显示出来,为了更好的效果和体验可以把tldr卸载。

在这里插入图片描述

10.pytest-html

在终端指定pytest 输出方法 --html 地址 名称
后即可生成一个html格式的测试报告
pytest -vs --html ./pytest01/result.html
在这里插入图片描述
更多pytest插件可以通过下面的网址获取。

11.pytest-random-order

随机执行测试用例,可以对用例进行打乱后进行随机测试。
用法:–random-order(默认随机测试)
将对以下代码进行随机测试

import pytest
import requests
url = "http://127.0.0.1:4523/m1/2459729-0-default/registersearch?user=admin&password=123456"

payload={}
headers = {
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Accept': '*/*',
   'Host': '127.0.0.1:4523',
   'Connection': 'keep-alive'
}

@pytest.fixture(autouse=True)
def login(request):
    response = requests.request("GET", url, headers=headers, data=payload)
    print(response.text)
    yield
    print("测试结束")
class TestFixture:
    def test_case001(self,login):
        res = requests.request("GET", url, headers=headers, data=login)
        assert res.status_code == 200
        print("接口连接成功")
        print(res.text)
def test_case002(request):
    print(request)
    print("测试用例2")
    assert 1 ==2
def test_case003(request):
    print(request)
    print("测试用例3")
    assert 1 !=2
def test_case004(request):
    print(request)
    print("测试用例4")
    assert 1 >2
def test_case005(request):
    print(request)
    print("测试用例5")
    assert 1 <2
def test_case006(request):
    print(request)
    print("测试用例6")
    assert 1+2==5
if __name__ == '__main__':
    pytest.main(["-vs", "test_3.py"])

终端执行:pytest -v --random-order test_3.py

可以看到随机打乱顺序进行用例测试
在这里插入图片描述
终端使用global参数进行测试:pytest -v --random-order-bucket=global test_3.py
在这里插入图片描述
禁用随机插件方法:pytest -p no:random_order

pytest插件网址

在这里插入图片描述

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

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

相关文章

解决python-opencv:(-215:Assertion failed) _img.empty() in function ‘cv::imwrite‘在将视频分成帧图片,写入时出现的问题

最近在搞视频检测问题&#xff0c;在用到将视频分帧保存为图片时&#xff0c;图片可以保存&#xff0c;但是会出现(-215:Assertion failed) !_img.empty() in function cv::imwrite问题而不能正常运行&#xff0c;在检查代码、检查路径等措施均无果后&#xff0c;了解了视频分帧…

rk3399 调试ap6354

电路如下: wifi&#xff1a; 按照rk3399 sdk默认配置&#xff0c;修改相应的引脚 sdio_pwrseq: sdio-pwrseq { compatible "mmc-pwrseq-simple"; clocks <&rk808 1>; clock-names "ext_clock"; pinctrl-nam…

filter功能演示-鉴权、声明缓存

文章目录 Filter定义工作原理Filter所处环节 Demo示例总结 Filter定义 在Java EE&#xff08;Java Platform, Enterprise Edition&#xff09;中&#xff0c;过滤器&#xff08;Filter&#xff09;是一种强大的组件&#xff0c;用于在Web应用程序中拦截和处理传入的请求和响应…

银河麒麟服务器V10 SP1 .Net6.0 开机自启动

开机自动启动&#xff0c;折腾了一小天&#xff0c;设置/etc/init.d/ 、update-rc.d&#xff0c;可能刚开始用&#xff0c;经验不多吧&#xff0c;尝试多种方式我的服务怎么都启动不起来&#xff0c;根据之前nginx和redis的自动启动经验&#xff0c;使用systemd管理服务&#x…

Unity基础 物理系统 刚体组件下的移动.碰撞.触发检测

当在Unity中创建游戏或应用程序时&#xff0c;重力系统是一个非常重要的组成部分。它可以模拟物体受到地球引力的影响&#xff0c;并产生逼真的物理效果。在Unity中&#xff0c;我们可以使用刚体组件和重力向量来控制重力系统。 首先&#xff0c;在Unity中创建一个物体&#xf…

数据表示与数据编码

数据表示与数据编码 数据表示 bit:二进制位 例如:480Mbps(Mb/s) 小写字母b代表bitbyte:字节 1byte8bit 使用大写字母B表示 byte最初从IBM360中开始表示word:字长 在32bit计算机中一个字长为32位&#xff0c;在64bit计算机中一个字长为64位 最早的微处理器字长为4位 章节学习内…

Windows的基本操作

Windows的基本操作 一、用户管理1.1、用户帐户1.2、用户管理 二、网络配置2.1、配置和查看命令 三、常用命令 一、用户管理 1.1、用户帐户 系统中的一种对象&#xff08;用户、组、计算机&#xff09;包含多种属性&#xff0c;如用户名、密码等不同用户帐户的用户名和密码等一…

插入排序--直接插入排序,折半插入排序,希尔排序

插入排序是一种简单直观的排序方法&#xff0c;其基本思想是每次将一个待排序的记录按其关键词大小插入前面已经排好的子序列&#xff0c;直到全部记录插入完成。 一&#xff0c;直接插入排序&#xff1a;从小到大排序 数组序号01234567待排序列4938659776132749第一轮384965…

【数据算法与结构】用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目

题目&#xff1a; Qestion: 用按层次顺序遍历二叉树的方法&#xff0c;统计树中具有度为1的结点数目。 数据结构定义 typedef struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right; } TreeNode;样例二叉树的形状 核心代码 // 统计具有度为1的节点数目的…

解决idea默认配置maven仓库地址的问题

我的maven配置地址 一直没注意 jar包什么的全部都是C盘默认的路径&#xff0c;导入项目更改后&#xff0c;再次导入项目 路径还是会变成C盘的路径&#xff1b; 上网搜索找到了解决的办法&#xff1b; 一、File——>New Projects Setup ———>Settings for New Projects…

React hooks之useCallback的使用与性能分析

使用useCallback优化代码 useCallback是对传过来的回调函数优化&#xff0c;返回的是一个函数&#xff1b;useMemo返回值可以是任何&#xff0c;函数&#xff0c;对象等都可以。 简单来说就是返回一个函数&#xff0c;只有在依赖项发生变化的时候才会更新&#xff08;返回一个…

vue项目打包后如何本都部署访问

npm run build生成dist项目后&#xff0c;在windows部署访问。 方式一&#xff1a; 1、新建一个文件夹 进入目录后打开cmd 输入npm init -y 2、输入 npm i express -s 是用于在 Node.js 项目中安装 Express 框架的命令 3、.将项目打包好的dist文件放入其中以及新建一个app.js文…

C++ 二叉搜索树

1. 内容安排说明 二叉树在前面 C 数据结构阶段已经讲过&#xff0c;本节取名二叉树进阶是因为&#xff1a; 1. map 和 set 特性需要 先铺垫二叉搜索树&#xff0c;而二叉搜索树也是一种树形结构 2. 二叉搜索树的特性了解&#xff0c;有助于更好的理解 map 和 set 的特性 …

在JDK17尝鲜Flink1.17

在JDK17尝鲜Flink1.17 前言 还没玩明白老版本&#xff0c;Flink1.17就来了&#xff01;&#xff01;&#xff01;总还是要向前看的。。。 根据官网文档&#xff1a;https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/try-flink/local_installation/ Flink r…

【Excel技巧】如何将一堆文字快速整理成一列表格数据?

在平时的工作中&#xff0c;我们有时候需要把很多零散的分布的内容&#xff08;比如姓名&#xff09;&#xff0c;复制到Excel工作表的单元格内&#xff0c;变成一列。如果一个个复制粘贴&#xff0c;显然太过繁琐。 如何批量快速的完成这一操作呢&#xff1f;只需要下面简单几…

关于排查springboot启动时页面出现404

今天在进行开发时&#xff0c;Contronller代码没有问题&#xff0c;前端html也没问题&#xff0c;发现当浏览器输入localhost:8080时404&#xff0c;于是进行排查发现&#xff0c;SpringbootWebApplication文件放到了子目录下。 springboot的启动文件必须放在父目录下才可以检测…

【Git原理与使用】-- 远程操作

目录​​​​​​​ 理解分布式版本控制系统 远程仓库 新建远程仓库 lssue 与 Pull Request模板文件 知识铺垫 lssue 模板文件 Pull Request模板文件 克隆远程仓库 使用 HTTPS 方式 使用 SSH 方式 第一步&#xff1a;创建SSH Key 向远程仓库推送 过程梳理 实操 …

Java安全——安全提供者

Java安全 安全提供者 在Java中&#xff0c;安全提供者&#xff08;Security Provider&#xff09;是一种实现了特定安全服务的软件模块。它提供了一系列的加密、解密、签名、验证和随机数生成等安全功能。安全提供者基础设施在Java中的作用是为开发人员提供一种扩展和替换标准…

vue中使用Drawflow连线插件,并对端口进行命名

效果如图 场景:项目中需要拖拽模块并连线,有输入端和输出端之分,不同模块不同端口才能相连 文档相关 点击前往------->原项目git地址 点击前往------->提供端口既可输出又可输出方案 点击前往----->查阅发现原项目无法对端口命名 public文件夹下创建drawflow文件夹…

myCobot 280 2023机械臂全新功能,手柄控制、自干涉检测

引言 机械臂是一种可编程的、自动化的机械系统&#xff0c;它可以模拟人类的动作&#xff0c;完成各种任务&#xff0c;例如装配、喷涂、包装、搬运、焊接、研磨等。由于其高度灵活性和多功能性&#xff0c;机械臂在现代社会中已经得到了广泛的应用。 myCobot 280 M5Stack 20…