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

相关推荐
垂杨有暮鸦⊙_⊙19 分钟前
阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
笔记·学习·无人机
Mephisto.java1 小时前
【大数据学习 | HBASE高级】region split机制和策略
数据库·学习·hbase
Bio Coder1 小时前
学习用 Javascript、HTML、CSS 以及 Node.js 开发一个 uTools 插件,学习计划及其周期
javascript·学习·html·开发·utools
Allen zhu1 小时前
【PowerHarmony】电鸿蒙学习记录-准备工作
学习·华为·harmonyos
华清远见成都中心2 小时前
物联网学习路线来啦!
物联网·学习
hgy89692 小时前
Ekman理论回归
学习
坚硬果壳_2 小时前
《硬件架构的艺术》笔记(一):亚稳态
笔记·学习
糊涂君-Q3 小时前
Python小白学习教程从入门到入坑------第三十一课 迭代器(语法进阶)
python·学习·程序人生·考研·职场和发展·学习方法·改行学it
qiyi.sky3 小时前
JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)
java·前端·笔记·学习·tomcat
dal118网工任子仪3 小时前
web安全漏洞之ssrf入门
笔记·学习·计算机网络·网络安全