洛阳新光建站系统,上海专业做网站的,网站建设和管理经验,wordpress自己添加menu基础知识学习完毕#xff0c;接下来我们开始学习测试框架啦#xff01;#xff01;#xff01;
首先来回顾一下python自带的Unittest框架#xff1a;
Python基础学习016__UnitTest-CSDN博客文章浏览阅读97次。Testcase:测试用例:这个测试用例是UnitTest的组成部分,不是手…基础知识学习完毕接下来我们开始学习测试框架啦
首先来回顾一下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?spm1001.2014.3001.5501
Python基础学习017__断言-CSDN博客文章浏览阅读26次。【代码】Python基础学习017__断言。https://blog.csdn.net/Chrisliuluo/article/details/134296766?spm1001.2014.3001.5501
Python基础学习018____参数化-CSDN博客文章浏览阅读16次。【代码】Python基础学习018____参数化。https://blog.csdn.net/Chrisliuluo/article/details/134302520?spm1001.2014.3001.5501Python基础学习019--跳过-CSDN博客文章浏览阅读145次。【代码】Python基础学习019--跳过。https://blog.csdn.net/Chrisliuluo/article/details/134538737?spm1001.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?spm1001.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_levelINFO
# 日志文件保存路径
log_file ./log/test1.log③控制执行顺序 在方法的上方添加pytest.mark.run(orderX)X可以为正数、负数也可以正负数同时存在。1.order同为正数或同为负数时,值越小优先级越高.正负数同时存在时正数优先,同类数越小优先级越高
2.对方法有效,对测试类同样有效
扩展:Unittest是通过ascII码决定执行顺序的
3跳过
pytest与Unittest有相似的跳过功能不过实现方式不同。同样是添加装饰器。
pytest.mark.skipif(version 20, reason版本低于20不支持该功能)
注意reason不可以缺。
适用于函数也适用于类
4断言
pytest没有封装断言方法可以直接使用python自带的断言
assert 表达式
表达式结果为True即断言成功表达式结果为False则抛出断言错误异常。
例如assert 10则抛出异常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?spm1001.2014.3001.5503