pytest基础知识

  pytest知识了解

pytest的基础知识了解:Python测试框架之pytest详解_lovedingd的博客-CSDN博客_pytest框架

(包含设置断点,pdb,获取最慢的10个用例的执行耗时)

pytest-pytest.main()运行测试用例,pytest参数: pytest-pytest.main()运行测试用例,pytest参数_小白爱吃饭的博客-CSDN博客

报错 usage: runAll.py [options] [file_or_dir] [file_or_dir] [...]  ,是由于没有安装pytest-html 

pytest  的使用 

pytest中标签名的使用 :  pytest之mark的使用 - 奔奔-武 - 博客园

Pytest装饰器   @pytest.mark.parametrize 的使用: Python Pytest装饰器@pytest.mark.parametrize详解_探索测试-CSDN博客_pytest.mark.parametrize

@pytest.mark.xfail  : pytest xfail参数详解 - jescs - 博客园

 @pytest.mark.skipif()  

pytest 中的 fixture的使用

pytest 中的 fixture的使用(1):  pytest进阶之fixture - linux超 - 博客园 

pytest 的fixture的使用 (2):Pytest 使用简介 - 三只松鼠 - 博客园

将固件参数化:

 

注意:

1. 需要安装 pytest-html

2. 若出现了 report.html 运行的0 test, 则说明是文件的命名不对

pytest的命名规则:默认从当前目录中搜集测试用例,即在哪个目录下运行 pytest 命令,则中哪个目录中搜索

-符合命令规则 test_*.py 或者 *_test.py 的文件

-以 test_ 开头的函数名

-以 Test 开头的测试类(没有__init__函数)当中,以 test_ 开头的函数

3.  @pytest.fixture() 以及 @pytest.mark.usefixture() 的用法

当function级别的 fixture 没有设置  autouse的时候,  执行完类级别的fixture,会直接执行 类中的函数

当function级别的 fixture 有设置  autouse的时候,  执行完类级别的fixture,会调用函数级别的fixture,再去执行类中的函数

(autouse: 如果为True,则fixture func将为所有测试用例激活可以看到它。如果为False(默认值),则需要显式激活fixture)

4. 上述的案例中,fixture函数 和 测试用例写在同一文件内,如果存在多个py 文件调用的话,则需要建一个 confest文件 ,test_xxx.py 测试文件中无需 import  conftest, pytest 会自动搜索同级目录中的 conftest.py 文件

5. 需要获得返回参数的时候,不可使用 @pytest.mark.usefixtures(),需要直接传参 ,因为fixture中返回的数据默认在fixture名字里面存储

pyte st 的标签的使用 比如 @pytest.mark.demo :

 标签不生效的处理方法:PytestUnknownMarkWarning: Unknown pytest.mark.wallet - is this a typo?..._weixin_30257433的博客-CSDN博客

 Pytest:conftest.py在登录接口上的应用

   Pytest:conftest.py在登录接口上的应用 - 简书

注意: 登录接口: headers 中需要传参qtoken的值 :  'qtoken':'VE9N35WLpFOYrEpOnrXC457xO8U2'

pytest 的 多进程运行cases  以及  重试运行cases 

 py test 在命令行(terminal)运行:

pytest  test_skip.py          #运行test_skip.py文件

pytest -v test_skip.py            #查看详细的运行信息

pytest -m demo testCase/test_Search.py    # 运行 被标记为demo的 用例,比如说有的用例未完成,则可标记为finished,unfinished ,来方便调试 

 pytest使用命令行来运行 测试用例:pytest教程之命令行方式运行用例_df0128的专栏-CSDN博客_pytest执行命令

 pytest  allure的教程

pytest  allure的安装教程 Pytest+Allure生成自动化测试报告 - 一步一脚印丶 - 博客园

安装allure报错提示JAVA_HOME is set to an invalid directory解决办法: 安装allure报错提示JAVA_HOME is set to an invalid directory解决办法_textwj的博客-CSDN博客  

对应的安装 java jdk的教程:JAVA_JDK下载与安装教程_weixin_42687361的博客-CSDN博客_javajdk安装步骤

安装jdk出现could not open 'D:\software\JAVA\lib\amd64\jvm.cfg' 的解决办法    win10安装jdk出现could not open 'D:\software\JAVA\lib\amd64\jvm.cfg'_lin1314yuan的博客-CSDN博客

allure 的用例描述使用 :allure(三十)--allure描述用例详细讲解 - 星空6 - 博客园 

生成allure报告:

方法1:

if __name__ == '__main__':

    pytest.main(['-s', '-q', '--alluredir', './allure'])

    os.system('allure -c ./allure')

    os.system('allure serve ./allure-report')

方法2:

pytest  -n auto --alluredir=yourdir                                 #  -n auto:可以自动检测到系统的CPU核数 使用分布式运行用例  ;   --alluredir=yourdir    #只需添加 --alluredir 选项,并提供指向应存储结果的文件夹的路径   例如:pytest -n auto --alluredir .\report    或者 pytest -n auto --alluredir=report , report是你要放置的文件夹名称

allure serve report       #report 是已生成json , txt 数据的文件夹

方法3:

pytest -sq --alluredir=report     # 执行 pytest,指定 allure 结果目录为report文件夹

allure generate -c -o ./allure-report    report    #根据report文件夹中的文件, 生成 allure 的 html 报告 放在 allure-report文件夹下

allure open ./allure-report     # 打开 allure 报告  

清除之前生成的json,txt文件,生成新的文件

pytest test_2.py  --alluredir=. /report   --clean-alluredir   #report为存放json,txt文件的文件夹 , 注意clean 后面接的是 - ,不是=

allure命令行 :  Pytest 系列(27)- allure 命令行参数 - 小菠萝测试笔记 - 博客园

 yaml文件:

yaml文件的使用   自动化项目配置或用例文件格式推荐--yaml - hyx20160514 - 博客园

yaml 校验器   YAML、YML在线编辑器(格式化校验)-BeJSON.com 

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

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

相关文章

Liunx(CentOS-6-x86_64)使用Nginx部署Vue项目

一:编译vue项目和上传到linux系统 通过本地编译器编译后的文件 上传服务器后的 二:安装 node(版本 v16.20.2)和npm( 8.19.4或 9.6.5) 备注一:安装nodejs就是安装node和npm, su…

分布式锁—Redisson的同步器组件

1.Redisson的分布式锁简单总结 Redisson分布式锁包括:可重入锁、公平锁、联锁、红锁、读写锁。 (1)可重入锁RedissonLock 非公平锁,最基础的分布式锁,最常用的锁。 (2)公平锁RedissonFairLock 各个客户端尝试获取锁时会排队,按照队…

2025年渗透测试面试题总结-字某某动-安全研究实习生(一面)(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 字某某动-安全研究实习生(一面) 一、岗位认知与方向选择 1. 对公司业务的理解 …

Dify平台部署记录

安装dify项目 官网地址:http://difyai.com/ github地址:https://github.com/langgenius/dify 下载项目: git clone https://github.com/langgenius/dify.git下载过慢,直接访问网页下载zip压缩包: 解压,…

串口数据记录仪DIY,体积小,全开源

作用 产品到客户现场出现异常情况,这个时候就需要一个日志记录仪、黑匣子,可以记录产品的工作情况,当出现异常时,可以搜集到上下文的数据,从而判断问题原因。 之前从网上买过,但是出现过丢数据的情况耽误…

如何用HTML5 Canvas实现电子签名功能✍️

🤖 作者简介:水煮白菜王,一位资深前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧和知识归纳总结✍。 感谢支持💕💕&a…

Uniapp项目运行到微信小程序、H5、APP等多个平台教程

摘要:Uniapp作为一款基于Vue.js的跨平台开发框架,支持“一次开发,多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台,并解析常见问题。 一、环境准备 在开始前,请确保已安装以下工具…

Python设计模式 - 建造者模式

定义 建造者模式是一种创建型设计模式,主要用于构建包含多个组成部分的复杂对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的对象表示。 结构 抽象建造者(Builder):声明创建产品的各个部件的方…

音乐API

https://neteasecloudmusicapi.vercel.app/docs/#/https://neteasecloudmusicapi.vercel.app/docs/#/ 使用实例 所有榜单内容摘要 说明 : 调用此接口,可获取所有榜单内容摘要 接口地址 : /toplist/detail 调用例子 : /toplist/detail 获取歌单所有歌曲 说明 : 由于网易云…

Jetpack Compose — 入门实践

一、项目中使用 Jetpack Compose 从此节开始,为方便起见,如无特殊说明,Compose 均指代 Jetpack Compose。 开发工具: Android Studio 1.1 创建支持 Compose 新应用 新版 Android Studio 默认创建新项目即为 Compose 项目。 注意:在 Language 下拉菜单中,Kotlin 是唯一可…

【day12】进程切换与调度:linux系统的幕后操控术

【Day12】进程切换与调度:linux系统的幕后操控术 进程优先级进程属性:UID进程属性:PRI和NI进程饥饿 竞争/独立/并行/并发进程切换进程调度(O(1)调度算法) 进程优先级 进程优先级的本质:衡量进程得到CPU资源…

STM32之BKP

VBAT备用电源。接的时候和主电源共地,正极接在一起,中间连接一个100nf的电容。BKP是RAM存储器。 四组VDD都要接到3.3V的电源上,要使用备用电池,就把电池正极接到VBAT,负极跟主电源共地。 TEMPER引脚先加一个默认的上拉…

mapbox高阶,结合threejs(threebox)添加管道

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️threebox Tube静态对象二、🍀使用thr…

Android15使用FFmpeg解码并播放MP4视频完整示例

效果: 1.编译FFmpeg库: 下载FFmpeg-kit的源码并编译生成安装平台库 2.复制生成的FFmpeg库so文件与包含目录到自己的Android下 如果没有prebuiltLibs目录,创建一个,然后复制 包含目录只复制arm64-v8a下

利用FatJar彻底解决Jar包冲突(三)

利用FatJar彻底解决Jar包冲突 Spring 容器的加载与隔离⽀持注解配置⽂件定位与容器初始化嵌套Spring容器的加载 隔离优化EagleEye traceId不⼀致问题原因解决 Spring 容器的加载与隔离 ⽀持注解 这个⽐较容易,主要是我们之前的应⽤不⽀持⼆⽅包内部的注解&#xf…

ThinkPHP8.0+MySQL8.0搭建简单实用电子证书查询系统

客户花了100元买了一个系统,开始不能导入,到处找人帮忙解决。给解决能导入了,不能修改,满足不了用户的需求。用户一狠心,花200块钱,叫我给他定制了一个电子证书查询系统。还免费给部署到服务器。惭愧惭愧……

越早越好!8 个反直觉的金钱真相|金钱心理学

很多人都追求财富自由,但成功的人少之又少。 这可能是因为,人们往往忽略了一些金钱的真相和常识。 01 金钱常识 & 真相 为了构建健康的金钱观,我读了一本有点反直觉,有点像鸡汤,但都是财富真相的书。 来自 Morg…

文本转语音-音画适时推送rtsp并播放

文本语音 rtsp适时播放叫号系统的底层逻辑 发布Linux, unix socket 和window win32做为音频源的 python10下的(ffmpeg version 7.1) 可运行版本. 这两天在弄这个,前2篇是通过虚拟声卡,达到了最简单的一个逻辑,播放文本就从声卡发声&#xff0…

类和对象(中)

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成…

搜索插入位置(js实现,LeetCode:35)

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入…