Pytest自动化测试

目录

一、Pytest如何安装

二、Pytest如何编写用例

三、Pytest如何运行用例

四、Pytest如何实现参数化

五、Pytest如何跳过和标记用例

六、Pytest如何失败重执行

七、Pytest如何使用夹具

八、Pytest如何进行夹具共享

九、Pytest如何设置夹具作用域


Pytest是Python中最流行的自动化测试框架之一,简单易用,而且具有丰富的插件可以不断扩展其功能,同时也提供了丰富的断言功能,使得编写测试用例更灵活。

一、Pytest如何安装

一般都使用pip来安装:

pip install pytest

二、Pytest如何编写用例

创建一个python文件(test_example.py),并编写以下代码:

# test_example.pydef add(a,b):               # 定义函数return a+bdef test_add():             # 编写测试用例assert add(1,2) == 3    # assert断言

三、Pytest如何运行用例

 打开终端,在对应的工作目录下,输入命令:

pytest test_example.py

四、Pytest如何实现参数化

import pytestdef add(a, b):return a + b@pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (0, 0, 0), (-1, 1, 0)])
def test_add(a, b, expected):result = add(a, b)assert result == expected

五、Pytest如何跳过和标记用例

import pytest@pytest.mark.skip("This function is not completed yet")
def test_uncompleted_function():pass@pytest.mark.slow
def test_slow_function():# 此处放慢测试的代码pass

六、Pytest如何失败重执行

首先安装失败重跑插件:pytest-rerunfailures

pip install pytest-rerunfailures

插件参数:
命令行参数:–reruns n(重新运行次数),–reruns-delay m(等待运行秒数)
装饰器参数:reruns=n(重新运行次数),reruns_delay=m(等待运行秒数)

如果想要重新执行所有测试用例,直接输入命令:

pytest --reruns 2 --reruns-delay 10 -s

上述首先设置了重新运行次数为2,并且设置了两次运行之间等待10秒。

如果想重新运行指定的测试用例,可通过装饰器来实现,命令如下:

import pytest@pytest.mark.flaky(reruns=3,  reruns_delay=5)
def test_example():import randomassert random.choice([True, False, False])

七、Pytest如何使用夹具

首先创建夹具,代码如下:

@pytest.fixture()
def test_example():print('case执行之前执行')yieldprint('case执行之后执行')

使用夹具方式1:通过参数引用

def test_case(test_example):print('case运行中')

使用夹具方式2:通过函数引用

@pytest.mark.usefixtures('test_example')def test_case():print('case运行中')

八、Pytest如何进行夹具共享

夹具共享:conftest.fy文件,可以跨多个文件共享夹具,而且在用例模块中无需导入,pytest会自动发现conftest.py中的夹具。
fixture 优先级:当前所在模块---> 当前所在包的 conftest.py--->上级包的 conftest.py--->最上级的 conftest.py


九、Pytest如何设置夹具作用域

作用域执行的优先级:session > module > class > function

根据@pytest.fixture()中scope参数不同,作用域区分:

  • function(函数):默认值。每个测试用例函数执行时都会执行一次。  
  • class(类):不论有多少测试用例,整个类只会运行一次。
  • module(模块):不论有多少测试用例,整个模块(文件)下只运行一次。
  • package(包):不论有多少测试用例,整个包(文件夹)下只运行一次。
  • session:不论有多少测试用例,整个pytest下只会运行一次。

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

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

相关文章

Nvidia 推出了一款新型芯片,专为在家中运行人工智能而设计

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

PyTorch 各种池化层函数全览与用法演示

目录 torch.nn.functional子模块Pooling层详解 avg_pool1d 用法与用途 参数 注意事项 示例代码 avg_pool2d 用法与用途 参数 注意事项 示例代码 avg_pool3d 用法与用途 参数 注意事项 示例代码 max_pool1d 用法与用途 参数 注意事项 示例代码 max_pool2d…

Selenium自动化测试面试必备:高频面试题及答案整理

自动化测试已经成为现代软件测试中不可或缺的一部分。在自动化测试中,Selenium是最受欢迎的工具之一,因为它可以模拟用户与Web应用程序的交互。因此,对于许多测试工程师来说,熟练掌握Selenium框架是非常重要的。如果你正在寻找一份…

外汇天眼:Broadridge与Boring Money合作推出资产管理公司的消费者责任解决方案

Boring Money,一家金融数据和见解公司,与全球金融科技领导者Broadridge Financial Solutions, Inc. (NYSE:BR)合作,为资产管理公司提供了一个汇总产品分析和消费者视角的数据与见解的单一信息源,从而全面满足英国《消费者义务》法…

代码随想录算法训练营Day23|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 669. 修剪二叉搜索树 前言 思路 递归法 108.将有序数组转换为二叉搜索树 前言 递归法 538.把二叉搜索树转换为累加树 前言 递归法 总结 669. 修剪二叉搜索树 题目链接 文章链接 前言 本题承接昨天二叉搜索树的插入和删除操作题目,要对整棵二叉搜索树…

Ubuntu16.04升级到18.04--检查更新时出现问题--解决方法

一开始装Ubuntu时装的是16.04,后来装cuda时,发现核是4.15的,需要升级到18.04,于是输入sudo do-release-upgrade更新时,发现错误: no module named DistUpgrade google后发现帖子: https://ask…

移动通信系统关键技术多址接入OFDM学习(7)

1.OFDM是一种多载波传输方案,可以将高速串行传输转换为低速并行传输,增加符号持续时间,抗多径干扰能力强。 串行和并行有着不同的比特持续时间,同时拥有相同的数据速率。因此,虽然OFDM将串行信号转换为并行信号&#…

HTTP基本概念

HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。 HTTP 默认工作在 TCP…

【数据库原理】(23)实际应用中的查询优化方法

一.基于索引的优化 索引是数据库查询优化的关键工具之一。合理地使用索引可以显著提高查询速度,降低全表扫描的成本。以下是建立和使用索引的一些基本原则和最佳实践。 索引的建立与使用原则 数据量规模与查询频率: 值得建立索引的表通常具有较多的记录&#xff0…

linux防火墙查看状态firewall、iptable

1、iptables防火墙 查看防火墙状态 service iptables status 停止防火墙 service iptables stop 启动防火墙 service iptables start 重启防火墙 service iptables restart 永久关闭防火墙 chkconfig iptables off 永久关闭后重启 chkconfig iptables on 开启80端…

【天龙怀旧服】攻略day5

关键字: 天鉴扫荡、举贤、燕子水路 1】85天鉴任务可以扫荡 在流派选择npc那里,花费40交子即可扫荡100点,可以兑换10个灵武打造图; 此外打造图绑定不影响做出来的灵武绑定,只要对应的玉不绑灵武就不绑定 2】冠绝师门…

报错java.lang.IllegalArgumentException: MALFORMED

java.lang.IllegalArgumentException: MALFORMEDat java.util.zip.ZipCoder.toString(ZipCoder.java:58)at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:300)at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:122)我是在解压压缩包文件的时候…

想要简化重复订单吗?不妨考虑一揽子采购订单

企业想提高采购流程效率,简化大批量采购是一个很好的开始。财务、会计和采购部门通过系统化订购大量物品(如纸张、打印机墨水和墨粉、清洁用品、纸制品和其他易重复采购的消耗品)可以节省时间和金钱。借助正确的采购订单(PO&#…

android 重启

RescueParty 重启 Android之RescueParty机制 - 简书 01-10 16:39:15.421637 1268 1395 W RescueParty: Attempting rescue level RESET_SETTINGS_UNTRUSTED_DEFAULTS Line 90467: 01-10 16:39:15.422713 1268 1395 W RescueParty: Performing scoped reset for pack…

小程序基础学习(组件通信)

介绍 点击子组件的按钮,把点击事件发送给页面 例如:点击这个“最大的一头猪”,由组件内部设置点击事件然后在传递给页面。 实现原理 给组件内部需要点击的文本设置点击事件 在组件内部监听点击事件,并发送给页面点击事件的详细信…

一天一个设计模式---桥接模式

概念 桥接器模式是一种结构型设计模式,旨在将抽象部分与实现部分分离,使它们可以独立变化而不相互影响。桥接器模式通过创建一个桥接接口,连接抽象和实现,从而使两者可以独立演化。 具体内容 桥接器模式通常包括以下几个要素&a…

操作符之可选链和空值合并

可选链操作符 ?. 是 JavaScript 的 ECMAScript 2020 (ES11) 中引入的一项新特性。它的作用是在处理可能为 null 或 undefined 的对象属性或方法时,防止因为访问链中的某个属性或方法为 null 或 undefined 而导致的错误。可选链操作符的语法是 ?.。 让我们来看一个…

node运行 js报错 SyntaxError: Cannot use import statement outside a module

使用babel相关模块来进行转义支持,通过使用babel编译,使其转化为node.js的模块。 1、安装依赖 npm install --save babel-corenpm install --save babel-preset-env npm install babel-cli -g2、在根目录下创建 .babelrc文件。内容为: {&qu…

C# 学习笔记-001-继承

1,继承类型 继承的类型:实现继承和接口继承 实现继承: 表示一个类型派生于一个基类型,拥有改类型的所有成员字段和函数。 接口继承: 表示一个类型只继承了函数函数签名,没有继承任何实现代码。 2&#xff…

电调相关英文缩写ESC、BEC、PPM、Oneshot125、Oneshot42、Multishot、DShot、ProShot

ESC ESC全称是 Electronic Speed Control 中文翻译成电子调速器,就是电调 BEC BEC全称是 battey elimination circuit 中文翻译成免电池电路 可以理解就是对外供电,BEC就是线性稳压,降压用的,给接收机飞控供电 ESC协议 ESC协议…