web|Web UI 自动化测试(5)

【web|Web UI 自动化测试(5)】pytest框架下的前置方法和后置方法:
setup_module(),teardown_module:整个模块只执行一次
setup_function(),teardown_function():每一个定义为函数的测试用例执行前和执行后都会执行一次
setup(),teardown():类中的每个用例执行前和执行后都会执行一次
setup_method(),teardown_method():类中的每个用例执行前和执行后都会执行一次
setup_class(),teardown_class():整个类只执行一次
pytest框架下的常用插件:
Pytest插件网站:https://docs.pytest.org/en/latest/reference/plugin_list.html
1、pytest控制用例执行顺序
通过在用例上使用装饰器来控制用例执行顺序
插件名称:pytest-ordering
安装:pip install pytest-ordering
使用方法:在测试用例上添加装饰器@pytest.mark.run(order=x)
order参数的值决定用例的执行顺序,可以是正数也可以是负数,值越小执行优先级越高,
正数负数都有的情况下,优先执行正数。
执行优先级:order参数为正数>没有设置装饰器>order参数为负数
2、跳过部分用例执行
使用方法通过装饰器控制
@pytest.mark.skip(reason=None) # 无条件跳过
@pytest.mark.skipif(condition=xxx,reason=None) # 满足一定条件跳过
condition: 跳过条件reason:跳过理由
当skipif中设置conditon=xxx时,必须设置reason=xxxx
3、用例执行失败重新执行一定次数
使用方法1、
安装插件:pytest-rerunfailures
安装:pip install pytest-rerunfailures
使用方法:在pytest命令执行时,添加参数--reruns n #n为重新执行的次数

使用方法2:
在用例上添加装饰器:@pytest.mark.flaky(reruns=3)
控制单个失败用例重新执行
两种方式同时使用时,安装装饰器设置的重跑次数执行。

4、标记执行用例(指定哪些用例执行)
使用方式:用例上添加装饰器
pytest.mark.标签名# 标签名可以有自己定义
标签名需要在pytest.ini文件中提前配置:
markers =
标签1
标签2
用例执行:pytest -m 标签名
pytest -m "标签1 and 标签2" # 同时标记标签1和标签2的用例执行
pytest -m "标签1 or 标签2" # 标记标签1 或 标签2的用例执行

5、pytest测试用例参数化
使用方法:在用例上添加装饰器
pytest.mark.parametrize(arguments,argvalue)
arguments:参数名argvalue:参数值
有几组参数,用例就会执行几次
6、pytest下fixture函数(锚定函数、固定函数):
fixture函数功能类似于前置方法和后置方法,有明显的特点(优点):
1、有独立的命令,并通过声明它们从测试函数、模块、类或整个项目中使用
2、按模块化的方式实现,每个fixture都可以互相调用
3、fixture函数适用的范围从单元测试到功能测试都可以使用,可以对fixture函数配置参数,可以跨类、函数、模块使用
定义fixture函数:
fixture函数命名不能以test_开头,要跟用例区分开。
在函数上添加装饰器@pytest.fixture()来装饰一个函数,那么这个函数就是一个fixture函数
fixture函数可以有返回值,没有的话默认返回None
fixture函数必须定义在conftest.py文件中,conftest.py文件名称是固定的,pytest会自动识别该文件,放到项目的根目录下就可以全局调用,如果放到某个package下,只在该package下有效。

fixture中实现setup和teardown功能:
在fixture函数使用yield关键字,yield关键字之前的位前置代码,之后的位后置代码

fixture函数使用:
1、通过在用例上添加装饰器@pytest.mark.usefixture()来使用
2、fixture函数作为用例的参数使用

当用例方法或用例函数中需要接收fixture函数的返回值时,fixture函数必须作为用例参数传入使用
当fixture函数需要传参时,需要通过pytest.mark.parametrize装饰器实现,且装饰器中必须设置参数indirect=True


fixture的作用范围:
在fixture函数中有个scope参数可以控制fixture函数的作用范围
scope参数的值分别是:session、module、class、function 默认值为function
session:一次会话执行一次,可以跨.py文件使用
module:每一个.py文件执行一次,该文件中可以有多个函数和类
class:每一个类执行一次
function:每个函数或方法都可以执行

自动化测试流程:
如果一个项目决定开展自动化测试工作,在项目立项后,相关工作就会启动。
在需求理解完成后,对项目有一定了解后,一般在测试计划或测试设计阶段,自动化测试工作就开始启动,这个时候主要是规划自动化测试框架的搭建,规划好之后开启编写一些基础功能代码,封装一些AW,这一部分工作完成后,等开发完成转测后,先进行手工测试,手工测试完成后,发现的问题也解决了,功能模块、页面都比较稳定了,这个时候开始针对页面进行封装,编写业务流程脚本,编写自动化测试用例,在新版本转测时,可以使用自动化测试脚本进行回归测试。
自动化测试工作和手工测试的工作是穿插进行的。
自动化测试用例编写时,需要先整理测试数据,按照整理好的测试数据写脚本。

    推荐阅读