WebUI自动化学习(Selenium+Python+Pytest框架)005

基础知识学习完毕,接下来我们开始学习测试框架啦!!!

首先来回顾一下python自带的Unittest框架:

Python基础学习016__UnitTest-CSDN博客文章浏览阅读97次。Testcase:测试用例:这个测试用例是UnitTest的组成部分,不是手工和自动化中所说的用例(Test Case)# Fixture:测试夹具:书写在TestCase中的,是一种代码结构,在每个方法执行前后都会执行的内容.# 为什么使用:能够组织多个用例去执行.提供了丰富的断言方法,能够生成测试报告。# TestSuite:测试套件,用来管理,组装(打包)多个TestCase。# TestRunner:测试执行:用来执行TestSuite。# 可以将用例的前置后置条件放在这里。https://blog.csdn.net/Chrisliuluo/article/details/134271984?spm=1001.2014.3001.5501

Python基础学习017__断言-CSDN博客文章浏览阅读26次。【代码】Python基础学习017__断言。https://blog.csdn.net/Chrisliuluo/article/details/134296766?spm=1001.2014.3001.5501

Python基础学习018____参数化-CSDN博客文章浏览阅读16次。【代码】Python基础学习018____参数化。https://blog.csdn.net/Chrisliuluo/article/details/134302520?spm=1001.2014.3001.5501Python基础学习019--跳过-CSDN博客文章浏览阅读145次。【代码】Python基础学习019--跳过。https://blog.csdn.net/Chrisliuluo/article/details/134538737?spm=1001.2014.3001.5501Python基础学习__测试报告-CSDN博客文章浏览阅读162次。stream = sys.stdout,必填,测试报告的文件对象(open一个文件就可以得到一个文件对象)即测试报告名称,注意,必须使用wb(二进制写入)打开。# runner = HTMLTestRunner(f,2,'测试报告名称','Python3.11') # 运行对象。# 即将报告模板放在代码目录下,导包,添加用例,使用第三方的Runner代替Python自带的TextTestRunner来执行用例实例。# title = None ,可选,是测试报告的标题。https://blog.csdn.net/Chrisliuluo/article/details/134538760?spm=1001.2014.3001.5501接下来,我们来学习一个新的框架:pythet

1.与Unittest框架相比,优缺点:

优点:功能更加强大,代码更简单,可以调用执行Unittest代码

缺点:需要安装才能使用

2.安装

直接安装:        pip install pytest

指定版本安装:        pip install pytest==版本号

查看安装结果:        pip list 或        pytest --version

3.使用

(1)定义

与Unittest不同,不需要装饰器,也不需要指定类继承,不需要将类名或函数名固定以Test开头。

类直接定义,继承基类object类即可。命名不需要特定以test开头,但是要注意类名开头统一,方便执行(不需要必须以Test开头,但是开头也要一致)

特殊函数:

①函数级别:开始函数 setup(self)、结束函数 teardown(self)

②类级别:开始函数setup_class(self)、结束函数 teardown_class(self),不需要装饰器指定为类方法。

(2)执行:

①使用主函数形式执行:在测试用例文件末尾添加如下代码:

if __name__ == '__main__':
    """
   语法: pytest,main(['-s','文件名.py'])
    """
    pytest.main(['-s', 'Pytest001_主函数形式执行.py'])

②使用配置文件+pytest命令执行:

注意:配置文件命名,可以为pytest.ini|tox.ini|setup.cfg|pyproject.toml,任选其一即可,通常用pytest.ini。不可以随便自定义

pytes.ini文件中不可以有注释,搬运的时候记得把下边代码的注释全部去掉

一个工程通常只有一个配置文件,放在根目录

写好配置文件,想要批量执行用例,只需要在Terminal命令行输入pytest命令即可。

[pytest]
# 测试用例代码的路径
testpaths =./scripts/
?
# 测试用例代码文件前缀,此处以test为例,可以是项目缩写或任意字符,
# 批量执行在testpaths指定的路径下,以test开头的测试文件
# 只要开头统一能使用通配符*匹配到,就可以批量执行以指定字符串开头的测试文件
python_files = test*.py
# 测试类指定开头,可以是任意字符,此处以Test为例
python_classes = Test*
# 测试方法指定开头,可以是任意字符,此处以Test为例
python_functions = test*
# 执行用例时,使用pytest命令,添加什么字段
# -s表示执行文件
# --html=./report/testreport1.html表示生成html文件形式的测试报告,保存在./report/testreport1.html路径
# --self-contained-html表示生成的html报告要将CSS文件整合在一起,保留页面布局
# --reruns 0表示用例的失败重执行次数。
addopts = -s
          --html=./report/testreport1.html --self-contained-html
          --reruns 0
# 生成日志的格式	
log_format = %(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(funcName)s:%(lineno)d)] - %(message)s
# 生成日志的时间格式
log_date_format = %Y-%m-%d %H:%M:%S
#是否生成日志文件
log_cli = true
# 生成日志的级别
log_cli_level=INFO
# 日志文件保存路径
log_file = ./log/test1.log

③控制执行顺序
在方法的上方添加@pytest.mark.run(order=X),X可以为正数、负数也可以正负数同时存在。1.order同为正数或同为负数时,值越小优先级越高.正负数同时存在时正数优先,同类数越小优先级越高

2.对方法有效,对测试类同样有效

扩展:Unittest是通过ascII码决定执行顺序的

(3)跳过

pytest与Unittest有相似的跳过功能,不过实现方式不同。同样是添加装饰器。

@pytest.mark.skipif(version <= 20, reason='版本低于20不支持该功能')

注意reason=不可以缺。

适用于函数,也适用于类

(4)断言

pytest没有封装断言方法,可以直接使用python自带的断言:

assert 表达式

表达式结果为True即断言成功,表达式结果为False则抛出断言错误异常。

例如:assert 1==0,则抛出异常,assert 'h' in 'hello' ,则断言成功

(5)参数化

①单个参数:

@pytest.mark.parametrize('name', ['张飒', "李思思"])

②多个参数:将多个参数名使用一个字符串用逗号隔开,或将多个参数名放在一个元组里

@pytest.mark.parametrize('name,passwd,msg', test_data)
@pytest.mark.parametrize(('name','passwd','msg'), test_data)

③通过函数引入测试数据

@pytest.mark.parametrize(('name','passwd','msg'), test_data())

添加一个PO模式封装实战——在线计算器

代码:

https://download.csdn.net/download/Chrisliuluo/88588738?spm=1001.2014.3001.5503

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端面试高频考点—TCP vs UDP

目录 简介&#xff1a; 区别&#xff1a; 应用选择&#xff1a; tcp为什么需要三次握手&#xff1f; 简介&#xff1a; TCP(传输控制协议)和UDP&#xff08;用户数据报协议&#xff09; TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;是专门为了在不…

AES加密技术:原理与应用

一、引言 随着信息技术的飞速发展&#xff0c;数据安全已成为越来越受到重视的领域。加密技术作为保障数据安全的重要手段&#xff0c;在信息安全领域发挥着举足轻重的作用。AES&#xff08;Advanced Encryption Standard&#xff09;作为一种对称加密算法&#xff0c;自1990年…

Redis部署-主从模式

目录 单点问题 主从模式 解析主从模式 配置redis主从模式 info replication命令查看复制相关的状态 断开复制关系 安全性 只读 传输延迟 拓扑结构 数据同步psync replicationid offset psync运行流程 全量复制流程 无硬盘模式 部分复制流程 积压缓冲区 实时复…

CCC数字车钥匙(八)——BLE配对相关字段

2.1 配对连接协议 2.1.3 所有者配对广播 对于所有者配对&#xff0c;仅支持Legacy LE 1M PHY。ADV_IND需要按照Section 2.3.1.1 Volume 6 Part B。 事件类型&#xff1a;无指向可连接和可扫描。 ADV_IND中包含广播地址和广播数据&#xff0c;如下所示&#xff0c;其中广播地址…

iris+vue上传到本地存储【go/iris】

iris部分 //main.go package mainimport ("fmt""io""net/http""os" )//上传视频文件部分 func uploadHandler_video(w http.ResponseWriter, r *http.Request) {// 解析上传的文件err : r.ParseMultipartForm(10 << 20) // 设置…

多线程(初阶五:wait和notify)

目录 一、概念 二、用法 &#xff08;1&#xff09;举个栗子&#xff1a; &#xff08;2&#xff09;wait和notify的使用 1、没有上锁的wait 2、当一个线程被wait&#xff0c;但没有其他线程notify来释放这个wait 3、两个线程&#xff0c;有一个线程wait&#xff0c;有一…

目标检测——Mask R-CNN算法解读

论文&#xff1a;Mask R-CNN 作者&#xff1a;Kaiming He Georgia Gkioxari Piotr Dollar Ross Girshick 链接&#xff1a;https://arxiv.org/abs/1703.06870 代码&#xff1a;https://github.com/facebookresearch/Detectron R-CNN系列其他文章&#xff1a; R-CNN算法解读SPP…

Leecode 【一】

环形链表: 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&…

教你用AI做治愈系风景动态视频

这几天刚发布AI小红薯商单变现案例库&#xff0c;同学们私信表示案例库启发很大&#xff0c;很有价值&#xff0c;只是能不能再多来点手把手式的实操教程&#xff01; 这是个好需求&#xff0c;没问题~&#xff0c;今天就手把手地给大家分享一个近半年来&#xff0c;在各大平台…

优思学院:六西格玛项目中什么是顾客之声?

让客户的声音成就您的成功&#xff01; 顾客之声(Voice of customer-VOC)是六西格玛项目中的一个重要概念&#xff0c;指的是从顾客的角度和需求出发&#xff0c;通过收集和分析顾客的反馈和意见&#xff0c;以了解他们对产品或服务的期望、满意度和不满意之处。顾客之声的目的…

分享几个可以免费使用GPT工具

1. 国产可以使用GPT3.5和4.0的网站&#xff0c;每日有免费的使用额度&#xff0c;响应速度&#xff0c;注册时不用使用手机号&#xff0c;等个人信息&#xff0c;注重用户隐私&#xff0c;好评&#xff01; 一个好用的ChatGPT系统 &#xff0c;可以免费使用3.5 和 4.0https://…

springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp

洗衣服是每个人都必须做的事情&#xff0c;而洗衣机更成为了人们常见的电器&#xff0c;但是单个洗衣机价格不菲&#xff0c;如果每人都买&#xff0c;就会造成资源的冗余。所有就出现了公用设备&#xff0c;随着时代的发展&#xff0c;很多公用都开始向着无人看守的自助模式经…

ChatGLM2详细安装部署(chatglm2大模型安装步骤三)

ChatGLM2安装部署 1.服务器配置 服务器系统:Centos7.9 x64 显卡:RTX3090 (24G) 虚拟环境:Miniconda3 2.安装部署 2.1 ChatGLM2下载 输入命令:git clone https://github.moeyy.xyz/https://github.com/THUDM/ChatGLM2-6B.git 输入命令:cd ChatGLM2-6B 注:https://g…

【note: This is an issue with the package mentioned above, not pip.】

安装gym时出现问题&#xff0c;note: This is an issue with the package mentioned above, not pip. 报错原因&#xff1a; 缺失了某些依赖模块&#xff0c;所以安装报错。 Collecting package metadata (current_repodata.json): done Solving environment: failed with in…

2021年11月10日 Go生态洞察:Twelve Years of Go

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

关于电脑提示vcruntime140_1.dll无法继续执行代码的解决办法

vcruntime140_1.dll是Visual C运行时库的一个组成部分&#xff0c;它包含了大量用于支持C应用程序运行时的功能。这个文件通常在开发和使用C程序时被调用&#xff0c;特别是在使用Microsoft Visual Studio进行开发时。vcruntime140_1.dll文件丢失或损坏会导致C程序无法正常运行…

python 使用reportlab打造29页图文并茂pdf(全网reportlab最强pdf自动化生成代码)

python 使用reportlab打造29页图文并茂pdf(全网reportlab最强pdf自动化生成代码&#xff09; 这次项目所使用的代码如果同志们可以灵活使用&#xff0c;基本上可以解决百分之九十以上的pdf模板自动化生成。 最近博主&#xff0c;做了一个项目&#xff0c;使用reportlab制作pd…

JDK10新特性

目录 传送门一、局部变量类型推断1、概念1.1、简单局部变量推断1.2、自定义对象的推断 2、可以使用的场景3、不能使用的场景4、注意事项 二、垃圾回收器的优化1、前置知识1.1、10种垃圾回收器1.2、分代与分区1.3、10种垃圾回收器小总结 2、优化点 三、新增API1、集合新方法copy…

多线程(初阶六:单例模式)

一、单例模式的简单介绍 二、饿汉模式 三、懒汉模式 四、饿汉模式和懒汉模式的线程安全问题分析 一、单例模式的简单介绍 单例模式是一种设计模式&#xff0c;其中设计模式是软性的规定&#xff0c;与它关联的框架是硬性的规定&#xff0c;这些都是大佬已经设计好了的&…

【工作记录】spider-flow使用插件连接并操作mongodb数据库

前言 前面说过&#xff0c;spider-flow有着非常优秀的插件机制&#xff0c;可以通过插件实现功能的扩展。前面有小伙伴问到mongodb的集成使用&#xff0c;本文就来梳理下spider-flow中使用mongodb插件的过程&#xff0c;其实非常简单。 PS: spider-flow的作者已经实现了一些常…