IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> pytest学习笔记 -> 正文阅读

[开发测试]pytest学习笔记

一、pytest单元测试框架
  • 什么是单元测试框架?
?? ??? ?软件开发过程中针对软件的最小单位(函数、方法)进行正确性的检查测试
  • 单元测试框架有哪些?
?? ?? ? Java:Junit? testng
?? ?? ? python:pytest&unittest
  • 单元测试框架主要做什么
?? ?? ? 1、测试发现:从多个文件里面找到测试用例
?? ?? ? 2、测试执行:按照一定顺序和规则执行测试用例,并生成测试结果
?? ?? ? 3、测试判断:通过断言判断预期结果和实际结果的差异
?? ?? ? 4、测试报告:统计测试进度、耗时、通过率、生成测试报告
二、单元测试框架和自动化测试框架的关系
  • 什么是自动化测试框架?
?? ?? ? 为了完成一个项目的自动化而封装的一个框架,主要封装的是自动化的基础模块,管理模块和统计模块。
  • 自动化框架的作用
?? ?? ? 1、提高测试效率,降低维护成本
?? ?? ? 2、减少人工干预,提高测试的准确性,增加代码的重用性
?? ?? ? 3、核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试
  • pytest单元测试框架和自动化测试框架的关系
?? ?? ? 单元测试框架:只是自动化测试框架中的组成部分之一(自动化测试框架还包含:pom设计模式,数据驱动,关键字驱动,全局配置文件的封装,日志监控,selenium,requests二次封装。断言体系,报告邮件等等)
三、pytest简介
  • 什么是pytest
?? ?? ? 1、是一个非常成熟的python的单元框架,比unittest更灵活更容易上手
?? ?? ? 2、可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化
?? ?? ? 3、可以实现测试用例的跳过和reruns失败用例重试
?? ?? ? 4、可以和allure生成美观的测试报告
?? ?? ? 5、可以和Jenkins持续继承
?? ?? ? 6、有很多插件,并且这些插件能够实现很多使用的操作
?? ??? ?? ? pytest-html? 生成html格式的自动化测试报告
?? ??? ?? ? pytest-xdist? 测试用例分布式执行,多CPU分发
?? ??? ?? ? pytest-ordering? 改变测试用例的执行顺序(unittest是按照ascii码顺序执行的,或者是testsuit顺序)
?? ??? ?? ? pytest-rerunfailures? 用力失败重跑
?? ??? ?? ? allure-pytest? ?生成美观的测试报告
?? ??? ?? ? 如何快速安装pytest插件:
?? ??? ?? ? 1、进入项目文件夹下,新建一个名为reqirment.txt(名字随便取)
?? ??? ?? ? 2、把所有要安装的插件名称都写到里面? ? ?注意不要有中文
?? ??? ?? ? 3、在terminal中输入:pip install -r 【文件名】? ? ?回车
?? ??? ?? ? 4、验证? terminal输入pytest --version? ? 有版本返回即为安装成功。? 注意这里安装的是局部的,只针对当前venv有效? 如果想要安装全局的 使用cmd安装
?四、使用pytest,默认的测试用例规则和基础应用
  • 模块名必须以test_开头或_test结尾
  • 测试类必须以Test开头,并且不能有__init__方法
  • 测试方法必须以test开头
五、pytest测试用例的运行方式
  • 主函数模式main
    • 运行所有用例:pytest.main()
    • 运行指定模块:main中增加? ? ?'要运行的py文件名'
    • 运行指定文件夹:main中增加? ? ?'要运行的文件夹名'
    • 通过nodeid指定用例运行:
      nodeid由模块名,分隔符,类名,方法名,函数名组成
      单独执行某个函数: pytest.main([ '-s' , '-v' , './second_demo/test_2-1.py::test2_2' ])
      执行某个类下的方法: pytest.main([ '-s' , '-v' , './second_demo/test_2-1.py::Test2_1::test2_1' ])
  • 命令行模式
    • 运行所有用例:直接terminal输入pytest
    • 运行指定模块:pytest 【pytihon文件名】
    • 运行指定文件夹:pytest 【文件夹名】
    • nodeid指定用例运行:
      pytest -v -s ./second_demo/test_2-1.py::test2_2
  • 参数详解:
    -s? 输出用例里面的调试信息,比如print
    -v? 输出详细的模块信息
    -n? 支持多线程或者分布式运行测试用例? ? ?例如:pytest -vs second_demo -n 2表示分配两个线程? ? ? pytest.main([ '-s' , '-v' , 'second_demo' , '-n=2' ])
    -reruns NUM? 失败用例重跑? ?例如:pytest -vs second_demo -reruns 2表示重跑两次? ? ? ? ? ? ? ? pytest.main([ '-s' , '-v' , 'second_demo' , '--reruns=2' ])
    -x 只要有一个用例报错测试用例停止? 例如:pytest -vs second_demo -x? ? ?? pytest.main([ '-s' , '-v' , 'second_demo' , '-x' ])
    -maxfail 2 出现两个用例失败就停止? ?例如:pytest -vs second_demo -maxfail 2? ?? pytest.main([ '-s' , '-v' , 'second_demo' , '--maxfail=2' ])
    -k 根据测试用例的部分字符串指定测试用例???例如:pytest -vs second_demo -k "2"? ?? pytest.main([ '-s' , '-v' , 'second_demo' , '-k="2' ])
  • 读取pytest.ini配置文件运行
    • 位置:一般放在项目的根目录
    • 编码:必须是ANSI,可以用notepad++修改编码格式
    • 作用:改变pytest的默认行为。比如命名方式
    • 运行的规则:不管是主函数的模式运行还是命令行的模式运行都会去读取这个配置文件
      [pytest]
      addopts = -vs? ??#命令行参数,用空格分隔
      testpaths = ./second_demo? ??#测试用例文件夹,可自己配置
      python_files = test*.py? ??#配置测试搜索的模块文件名称
      python_classes = Test*? ??#配置测试搜索的测试类名称
      python_functions = test? ??#配置测试搜索的测试函数名称
    • 格式:
六、pytest执行测试用例的顺序
  • uinittest:ascii码顺序执行
  • pytest:按照默认用例顺序执行
    • 可以使用使用装饰器order来控制执行顺序:@pytest.mark.run(order=1)
七、如何分组执行
  • smoke:冒烟用例,分布在各个模块
    第一步:pytst.ini中配置markers = smoke
    第二步:要执行的函数或者方法前增加装饰器
    第三步:执行的时候带-m? "smoke"? ? 如果想执行多个模块就使用-m "A_name or B_name"
八、pytest跳过测试用例
  • 无条件跳过
  • 有条件跳过
九、生成报告
  • 生成html报告: pytest --html=report.html ./(pytest.ini中配置后,执行pytest时无法指定文件夹运行)
  • 生成allure测试报告
    1、下载、解压、配置path路径 全局变量
    下载后解压,并添加到全局环境变量中D:\Software\allure-2.14.0\bin
    验证:cmd? 输入allure --version??
    如果dos可以验证但是pycarm无法验证,则重启pycharm。因为刚刚配置了全局变量
    2、加入命令生成json格式的临时报告
    3、生成allure报告
十、pytest框架实现一些前后肢的处理,常见有三种
  1. setup/teardown,setup_class/teardown_class:小写
  2. 使用@pytest.fixture装饰器来实现部分用例的前后置:被fixture标记的函数里面的return可以传到使用fixture的函数或方法中
    即可以所有用例执行前后置,又可以实现部分用例的前后置
    scope:表示的是被标记的方法的作用域。session>module>class>function? ?默认function
    params:参数化? ?支持列表[],元组(),字典列表[{},{},{}],字典元组({},{},{})
    autouse:自动执行,默认false
    ids:当使用params时,给每个值设置一个变量名
    name:给被标识的方法起个别名:取了别名后原来的函数名就无法使用了
十一、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局)
  1. conftest.py文件是单独存在的一个夹具(装饰器)配置文件,名称不能更改
  2. 可以在不同的py文件中使用同一个fixture函数
  3. 原则上conftest.py需要和运行的用例放到同一层(不同层也可以用),并且不需要做任何inport的导入操作。fixture执行的顺序和函数前后顺序相同
十二、断言
  • assert
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:46:59  更:2021-07-10 14:47:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 1:59:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码