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,这一部分工作完成后,等开发完成转测后,先进行手工测试,手工测试完成后,发现的问题也解决了,功能模块、页面都比较稳定了,这个时候开始针对页面进行封装,编写业务流程脚本,编写自动化测试用例,在新版本转测时,可以使用自动化测试脚本进行回归测试。
    自动化测试工作和手工测试的工作是穿插进行的。
    自动化测试用例编写时,需要先整理测试数据,按照整理好的测试数据写脚本。

你可能感兴趣的:(web,UI,自动化测试,selenium,pytest框架,自动化,测试用例)