Pytest接口自动化框架

news2024/11/20 12:25:56

目录

 前言:

插件:

 test_case

 pytest.ini   (pytest.ini 配置文件不支持注释)

 run_all.py

report

 插件:

 test_case

 pytest.ini   (pytest.ini 配置文件不支持注释)

 run_all.py

report


 前言:

pytest是一个基于Python的开源测试框架,专门用于编写和执行自动化测试。它提供了简洁的语法、灵活的插件机制和丰富的断言库,使得编写和运行测试用例变得简单而高效。

插件:

@pytest.mark.skip(reason='跳过Test类,会跳过类中所有方法')
@pytest.mark.parametrize('val', [5,4,3,2,1])  #一条用例传多个参数
    def test_collision_detect_001(self, val):
        duco_cobot.collision_detect(val)
        logger.info("设置碰撞检测等级: {}".format(val))    
@pytest.mark.parametrize('val', [i for i in range(1,9)])

传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参
@pytest.mark.repeat(N)重复
@pytest.mark.smoke   设置冒烟用例

@allure.title("用例标题")
@allure.description("用例描述")
@allure.step("用例步骤")

 test_case

 1 import pytest
 2 import allure
 3 
 4 @allure.title("用例标题")
 5 class Test_Linux2671():
 6 
 7     @allure.description("""
 8     用例描述
 9     比如前置信息
10     比如环境信息
11     比如注释等等
12     """)
13     def setup_class(self):
14         duco_recv.open()
15 
16     def setup(self):
17         self.log_start = duco_recv.get_last_error()
18 
19     @allure.step("用例步骤")
20     def test_linux2671_001(self):
21         print("13岁丧母")
22         print("25岁科举二次落榜")
23         print("36岁龙场悟道")
24 
25     def teardown_class(self):
26         wym.close()
27 
28 if __name__ == '__main__':
29     pytest.main(["-vs"])

 pytest.ini   (pytest.ini 配置文件不支持注释)

1 [pytest]
2 addopts = --alluredir ./tmp --clean-alluredir
3 testpaths=testcases/
4 python_files=test_*.py
5 python_classes=Test*
6 python_functions=test_*
7 timeout=300 

 run_all.py

1 if __name__ == '__main__':
2     pytest.main(["testcases"])
3     os.system("allure generate ./tmp -o ./reports --clean")

report

岁月悠悠,沧海桑田。他们老了 ,她们走了...留下了毕生的智慧,没有索取,只有付出,爱依旧无声。如果一个家族中有50%的晚辈都比较优秀,那这个家族中一定有一位长者强人甚至是集大成者,仅洞察人性这一点至少能遗传三代。当然,也不乏有像你我一样的平庸后人,在前人积福的影响下,也总能幸福安稳的过完一生。

 插件:

@pytest.mark.skip(reason='跳过Test类,会跳过类中所有方法')
@pytest.mark.parametrize('val', [5,4,3,2,1])  #一条用例传多个参数
    def test_collision_detect_001(self, val):
        duco_cobot.collision_detect(val)
        logger.info("设置碰撞检测等级: {}".format(val))    
@pytest.mark.parametrize('val', [i for i in range(1,9)])

传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化
@pytest.mark.repeat(N)重复
@pytest.mark.smoke   设置冒烟用例

@allure.title("用例标题")
@allure.description("用例描述")
@allure.step("用例步骤")

 test_case

 1 import pytest
 2 import allure
 3 
 4 @allure.title("用例标题")
 5 class Test_Linux2671():
 6 
 7     @allure.description("""
 8     用例描述
 9     比如前置信息
10     比如环境信息
11     比如注释等等
12     """)
13     def setup_class(self):
14         duco_recv.open()
15 
16     def setup(self):
17         self.log_start = duco_recv.get_last_error()
18 
19     @allure.step("用例步骤")
20     def test_linux2671_001(self):
21         print("13岁丧母")
22         print("25岁科举二次落榜")
23         print("36岁龙场悟道")
24 
25     def teardown_class(self):
26         wym.close()
27 
28 if __name__ == '__main__':
29     pytest.main(["-vs"])

 pytest.ini   (pytest.ini 配置文件不支持注释)

1 [pytest]
2 addopts = --alluredir ./tmp --clean-alluredir
3 testpaths=testcases/
4 python_files=test_*.py
5 python_classes=Test*
6 python_functions=test_*
7 timeout=300 

 run_all.py

1 if __name__ == '__main__':
2     pytest.main(["testcases"])
3     os.system("allure generate ./tmp -o ./reports --clean")

report

岁月悠悠,沧海桑田。他们老了 ,她们走了...留下了毕生的智慧,没有索取,只有付出,爱依旧无声。如果一个家族中有50%的晚辈都比较优秀,那这个家族中一定有一位长者强人甚至是集大成者,仅洞察人性这一点至少能遗传三代。当然,也不乏有像你我一样的平庸后人,在前人积福的影响下,也总能幸福安稳的过完一生。

 

作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N5K3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=xDO13nzpfizFgd5LduYouVWGlfILKiID&authKey=TTzgMcMyNEfwu9lChmN9dw2zvAfj8PMIjxQhT23zl5hUqtbxMMfbi%2BsdzFetfiq4&noverify=0&group_code=574737577

 

 

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

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

相关文章

ShaderGraph制作“红旗迎风飘扬”效果(Unity2019版)

零、准备“旗面”游戏物体 旗面是一个平面,右键创建的3D物体里是平面的,有Quad和Plan,模仿旗面“起伏”的原理是对平面的顶点,做不同程度的抬升:Quad从线框图中看,是一个长方形,只有四个顶点&am…

nginx unknown directive “stream“

目录 1、安装依赖 2、执行命令 nginx 运行报错:unknown directive "stream"的原因,主要是因为没有安装stream模块导致的,我们只需要编译安装一下stream模块即可解决这个问题。 1、安装依赖 提前安装编译所需要的依赖插件 # gcc…

【机器学习与遥感】sklearn与rasterio实现遥感影像非监督分类

在学习遥感的过程中,我们都了解到了监督分类与非监督分类,二者是遥感解译的基础。之前更多的是使用Erdas与ENVI来进行这两种分类。这里使用python语言,基于机器学习库sklearn与遥感影像处理库rasterio,使用kmeans动态聚类方法实现…

PP-Structure—表格数据提取

目录 简介 特性 效果展示 表格识别 版面分析和表格识别 版面恢复 关键信息抽取 快速开始 1. 准备环境 1.1 安装PaddlePaddle 1.2 安装PaddleOCR whl包 2 快速使用 3. 便捷使用 3.1 命令行使用 3.2 Python脚本使用 3.3 返回结果说明 分析总结 简介 PP-Stru…

Python 装饰器

一、什么是装饰器 装饰器本质上就是一个Python函数,它可以装饰在其他函数上,使得其他函数不需要做任何改动就可以获得装饰器函数中的功能。实际上被装饰器修饰的函数在执行的时候不会直接运行其函数内部的逻辑,而是先将这个函数当作参数传递…

【企业架构治理】SOGAF ,Salesforce 的运营、治理和架构框架

“如果你想要新的东西,你必须停止做旧的东西。”——彼得德鲁克,《公司概念》的作者 这篇文章介绍了 Salesforce 运营、治理和架构框架 (SOGAF),这是一个新的大规模治理框架,由对跨多个行业的学术文献、现有框架和转型案例研究的广…

如何对数据库进行垂直拆分或水平拆分?

水平拆分的意思,就是把一个表的数据给弄到多个库的多个表里去,但是每个库的表结构都一 样,只不过每个库表放的数据是不同的,所有库表的数据加起来就是全部数据。水平拆分的意 义,就是将数据均匀放更多的库里&#xff0…

高性能计算培训机构哪些好?培训机构排行推荐!

目前市面上高性能计算培训不多,尤其是专业做高性能计算培训的机构更是不多。 比较好的高性能计算培训有北大未名超算队、各类超算中心的高性能计算培训视频、以及猿代码科技的系统实战化的高性能计算培训课程,这些在B站上均有不错的播放量,群…

【Go语言从入门到精通系列-基础篇】Go语言变量、常量和运算符:完全指南

系列文章目录 【Go语言从入门到精通系列-基础篇】Go安装 语言特性,以及开启你人生中的第一个go程序 【Go语言从入门到精通系列-基础篇】Go语言包的管理以及基础语法与使用。 Go语言从入门到精通系列-基础篇 系列文章目录前言一、变量和常量的基本概念1. 变量1.1 变…

赶赴一场夏日盛宴丨千岛湖夏季团建旅行攻略

千岛湖的秀丽景色让人惊艳,也是江浙沪地区热门的团建目的地之一; 千岛湖 千岛湖团建元素:【千岛湖风景区】【山顶观景台】【皮划艇】【环湖骑行】【卡丁车】【高空闯关】【篝火晚会】【湖畔烧烤】【高空跳伞】 【千岛湖山顶观景台】 站在湖畔…

如何用快改图工具指定压缩图片大小

我们在遇到好看的图片或自己拍的照片,都会对其进行一些处理,处理完成后将其保存,保存时发现自己要存的图片太多了,比较占内容。这种情况就需要压缩。那么,在压缩图片时,怎么压缩图片到指定大小呢&#xff1…

【ES三周年】| 基于国产化操作系统搭建ELK日志分析平台

引入 鲲鹏认证-Kylin麒麟操作系统-ELK日志分析平台 开篇 何为ELK Stack?它又能够给我们带来什么? 综述 ELK为三个开源项目的首字母缩写,分别对应是:Elasticsearch、Logstash、Kibana,由这三个软件及其相关的组件可…

threejs 入门 (vite + vue3)

threejs threejs用于实现3D效果 vite创建vuejs项目 npm create vite选择vue 和js创建vue3项目 安装threejs npm install three运行项目 cd project npm i npm run dev修改App.vue 创建一个场景和立方体&#xff08;Creating a scene&#xff09; <script setup> …

labview 波形图表(waveform Chart)

波形图表&#xff08;waveform Chart&#xff09;是显示一条或多条曲线的特殊数值控件&#xff0c; 一般用于显示以恒定速率采集的数据。 波形图表会在缓冲区保留历史数据并在历史数据后添加新数据。 波形图表的默认数据缓冲区大小为1024个数据点。 &#xff08;右击波形图…

BurpSuite使用教程·代理抓包篇

BurpSuite使用教程代理抓包篇 1.Burp Suite代理和浏览器设置2.数据拦截与控制3.可选项配置4.Proxy监听设置1.Burp Suite代理和浏览器设置 Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截h…

Mybatis源码分析_事务管理器 (5)

今天我们首先学习2个设计模式。工厂设计模式 和 模板设计模式 工厂方法模式&#xff1a; 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类实例化延迟到子类。 上图的图很清晰&#xff1a;业务接口有很多实现类&#xff0c;而工厂接口也有还…

保姆级自动化测试教程(Selenium+java)

文章目录 自动化测试1. 自动化测试介绍2. Selenium介绍与环境搭建2.1 介绍2.2 Selenium原理2.3 SeleniumJava环境搭建 3. webdriver API3.1 元素的定位3.2 操作测试对象3.3 添加等待3.4 打印信息3.5 浏览器操作3.6 键盘事件3.7 鼠标事件3.9 特殊使用3.10 浏览器关闭3.11 切换窗…

让你不再好奇ai绘画生成器有哪些

绘画爱好者李明最近遇到了一个难题&#xff1a;他需要在短时间内完成一幅复杂的数字油画作品&#xff0c;但是他的手绘技能仍然不够熟练。于是&#xff0c;他想到了借助一些ai绘画软件来帮助他进行绘画创作。那么&#xff0c;你知道ai智能绘画软件有哪些吗&#xff1f;接下来我…

Vue中使用ElementUItable表格显示图片问题

1.问题 说明&#xff1a;table表格显示不了图片问题 品牌logo中显示的是url地址&#xff0c;因此我们要使用作用域插槽。 <template slot scope"{row,$index}"> </template> 说明&#xff1a;使用Vue的插槽功能&#xff0c;允许在当前列的内容上添加…

git暂存功能(只需要两步)

使用场景 我在写一个功能的时候发现一个bug&#xff0c;但是这个bug在我上一次提交的时候好像是没有的&#xff0c;所有我需要把当前的代码暂存,然后查看上一次提交是否正常。 一、暂存 暂存当前所有的修改 git stash二、恢复 恢复最近一次暂存&#xff0c;并把暂存删掉 …