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)执行:

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

python 复制代码
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命令即可。

python 复制代码
[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

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
金智维科技官方5 天前
智能体,重构企业自动化未来
人工智能·自动化·agent·智能体·数字员工
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode