初识测试框架+pytest简介+pytest的执行

pytest的基本使用
在这里插入图片描述
一、单元测试框架
1.单元测试
是指软件开发中,针对软件的最小单位(函数、方法)进行正确性的检查测试。
2.单元测试框架的主要内容
测试发现:从多个文件里面去找到测试用例
测试执行:按照一定的顺序和规则去执行,并生成结果
测试判断:通过断言判断预期结果和实际结果的差异
测试报告:统计测试进度、耗时、生成测试报告

常用的单元测试框架:java有junit和testng,python有unittest和pytest,
3、自动化测试框架
为完成一个系统的自动化测试而封装的一整套的完善的代码框架,主要封装“自动化的基础模块“、”自动化的管理模块“、“自动化的统计模块”
自动化测试框架包含:单元测试框架、pom设计模式、数据驱动、关键字驱动、全局配置文件的封装、日志监控、selenium及requests二次封装、断言、报告邮件…
4.自动化框架的作用
提高测试效率,降低维护成本
减少人工干预,提高测试的准确性,增加代码的复用性
核心思想:让不懂代码的人,也能够通过这个框架去实现自动化测试
5.单元测试框架和自动化测试框架之间的关系
单元测试框架只是自动化测试框架中的组成部分之一

二、pytest简介
1.pytest是一个非常成熟的python单元框架,比unittest更灵活,容易上手;
2.pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、app自动化;
3.pytest可以实现测试用例的跳过一集reruns失败用例重试;
4.pytest可以和allure生成非常美观的测试报告;
5.pytest可以和jenkins持续集成;
6.pytest有很多强大的插件,并且这些插件能够实现很多实用的操作(需要安装)
pytest
pytest-html:生成html格式的自动化测试报告
pytest-xdist:测试用例分布式执行,多CPU分发
pytest-ordering:用于改变测试用例的执行顺序
pytest-rerunfailures:用例失败后重试
allure-pytest:生成美观的测试报告

三pytest的默认用例规则
1.模块名必须以test_开头(eg:test_.py)或者test.py为结尾(必须有“
2.测试类必须以Test开头,并且不能有init方法(即:不能有构造方法)
3.测试方法必须以test开头
**注意:**默认如此,可以更改哦,但是配置文件一定要正确哦,详见“四(三)部分”
在这里插入图片描述

四、测试用例的运行方式
(一)方式一:主函数模式
1.可以运行所有用例:pytest.main()
在这里插入图片描述

2.运行部分用例–加参数:pytest.main([“-v”,“test_module0.py”])
在这里插入图片描述
(3)通过nodeid指定用例运行
**
(二)方式二:命令行模式
(1)运行所有 pytest
在这里插入图片描述
(2)指定到模块:pytest -vs “./testCase/test_module0.py”
在这里插入图片描述
(3)通过nodeid指定用例运行:pytest.main([“-v”,“模块名::类名::方法名”])
在这里插入图片描述

nodeid是由模块名、分隔符、类名、方法名、函数名组成
在这里插入图片描述

(三)方式三:通过读取pytest.init配置文件(在自动化经常使用的方式)
pytest.int 是pytest单元测试框架的核心配置文件
具体内容如下:

[pytest]
#命令行的参数,用空格分隔
# 输入简要信息,信息回溯只有一行,失败用例重执行一次,产出测试报告
addopts = -vs -q --tb=line --reruns 1 --html=report_name.html 
#测试用例的路径
testpaths = ./testCase
#模块名的规则
python_files= test_*.py
#类名的规则
python_classes = Test*
#方法名的规则
python_functions = test

(1)位置:一版放在项目的根目录
(2)编码:编码必须是ANSI,可以使用notpad++修改编码格式
(3)作用:修改pytest的默认行为(eg:测试用例的编写命名方式)
(4)运行的规则:不管是主函数还是命令行模式,都会去读取这个配置文件
默认执行效果如下:
在这里插入图片描述

修改配置规则,执行如下:
在这里插入图片描述

(四)参数详解
(1)-s:表示输出调试信息,包括打印的信息
(2)-v:显示更详细的信息
(3)-vs:可以同时使用
(4)-x:只要有一个用例报错就停止
(5)–maxfail=n:出现n个用例失败就报错
(6)-n:支持多线程或者分布式运行测试用例,多CPU分发
如果想分布式执行用例,用例设计必须遵循以下原则:
a、用例之间都是独立的,即:用例a不要去依赖用例b,
b、用例执行没先后顺序,
即:随机都能执行每个用例都能独立运行成功每个用例都能重复运行,不影响其它用例。
具体效果如下:
没有使用-n:
在这里插入图片描述
使用-n:
在这里插入图片描述
(7) --reruns n :失败用例重试,n代表重试几次
a、设置错误用例
在这里插入图片描述
b无重试机制
在这里插入图片描述
c增加重试2次
pytest -vs “./testCase/test_module0.py” --reruns 2
在这里插入图片描述
(8)-k:根据测试用例的部分字符指定测试用例
pytest -vs “./testCase/test_module0.py” -k “zz”
在这里插入图片描述
(9)–html:生成测试报告

五、如何分组执行用例-使用mark
(1)使用场景:
每次提测后,执行冒烟用例
只变动部分模块,只需执行模块用例即可
当涉及接口变动,只需执行接口用例(无执行ui用例)
。。。。
(2)具体步骤如下
a、配置文件中增加标记类型(可根据实际情况进行自己定义)
在这里插入图片描述
b、注解用例
在这里插入图片描述
在这里插入图片描述
c执行用例
eg:pytest -m “smoke or usermanage or accountmanage”
or是或的关系,and是与的关系
在这里插入图片描述
在这里插入图片描述

六、用例跳过
(1)无条件跳过@pytest.mark.skip()
在这里插入图片描述

(2)有条件跳过: @pytest.mark.skipif()
在这里插入图片描述

七、pytest执行用例的顺序
unittest:按照ASCII的大小来决定执行顺序
pytest:默认是从上到下,可使用ordering插件中的mark标记改变默认执行顺序
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值