接口自动化测试python+pytest+request+allure

pytest使用
pytest是基于单元测试框架unittest的升级版本,相比与unittest支持跨多个文件前置,支持丰富的报告,简练的断言,丰富的插件功能,
pytest分模块运行前置和后置操作分为2种方式,支持经典的setup、setdown和fixture;以及标记参数mark、断言、常用插件

1、setup和setdown

>>类级(setup_class/teardown_calss)只在类中前后运行一次(在类中)

接口自动化测试python+pytest+request+allure_第1张图片

>>方法级(setup_method/teardown_method)开始于方法始末(在类中)

接口自动化测试python+pytest+request+allure_第2张图片

>>方法级和类混合使用

接口自动化测试python+pytest+request+allure_第3张图片

>>模块级(setup_module/teardown_module)开始于横块始末,全局的

>>函数级(setup_function/teardown_function)只对函数用例生效,作用域独立的def用例(不在类中)

执行顺序:模块级>类级>方法级

2、fixture

pytest.fixture():作用于模块内的所有用例,但需要传递装饰函数为参数,可置于class内或class外,利用yield(生成器关键字),来实现setup、setdown操作功能,如下图所示

接口自动化测试python+pytest+request+allure_第4张图片

 运行结果

接口自动化测试python+pytest+request+allure_第5张图片

  • scope参数

fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function
比如: @pytest.fixture(scope="function")

    • function 函数或者方法级别都会被调用
    • class 类级别调用一次
    • module 模块级别调用一次
    • session 是多个文件调用一次(可以跨.py文件调用,每个.py文件就是module),写在在conftest.py中

例如整个模块有多条测试用例,需要在全部用例执行之前打开浏览器,全部执行完之后去关闭浏览器,打开和关闭操作只执行一次,如果每次都重新执行打开操作,会非常占用系统资源。这种场景除了setup_module,teardown_module 可以实现,还可以通过设置模块级别的 fixture 装饰器(@pytest.fixture(scope="module"))来实现。

  • autouse参数

默认autouse="flase",需要调用才能使用,autouse="true"自动执行,不用再调用,
@pytest.fixture(scope="function",autouse="true")

  • params参数

传输数据
@pytest.fixture(params=[1, 2, 3])

3、mark参数介绍

对测试用例打标签
@pytest.mark.标记名,可以自定义mark,在conftest.py或者pytest.ini(标记P0,P1,P2,或者特征类)
运行测试用例时,可根据标签单独运行某类测试用例,命令为:pytest -m"标签名1 and/or/not 标签名2 "

接口自动化测试python+pytest+request+allure_第6张图片

在配置文件中定义标签

pytest的mark扩展使用

      • @pytest.mark.xfail(reason="")标记为失败,期望值为失败,在函数之上使用,pytest.xfail()预期结果失败,下面的代码不会执行,在函数里使用
      • @pytest.mark.skip()无条件跳过测试用例,pytest.mark.skipif()有条件跳过测试用力
      • @pytest.mark.parametrize(param1,[1,2,3])多组参数单个用例的执行
      • @pytest.mark.run需要插件pytest-ordering # 控制函数执行顺序,@pytest.mark.run(order=1)
      • @pytest.mark.flaky
        最多失败重跑5次,如果失败延迟2秒重跑,可以结合mark标记使用,@pytest.mark.flaky(reruns=5,reruns-delay=2)
        如果是批量执行,命令为:pytest --reruns 5 --reruns-delay2

4、常用断言

断言关键字assert,可根据自己的需要灵活调整和封装

接口自动化测试python+pytest+request+allure_第7张图片

5、pytest常用插件扩展

      • pytest-cov代码覆盖率的检测 pytest --cov=src --cov-report = html
      • pytest -sugar 改变pytest默认外观,增加进度条功能
      • pytest-xdist 并行运行,pytst -n 2
      • pytest-rerunfailures 失败用例重跑
      • pytestr-ordering 执行顺序
      • pytest-picked 仅测试上次提交以来已更改的代码

request模块

python的第三方库,支持各种请求方法,可根据自己的项目灵活的使用封装,有疑问的可留言一块探讨,就不再这里展开了....

allure简介

接口自动化测试python+pytest+request+allure_第8张图片

allure包含功能

接口自动化测试python+pytest+request+allure_第9张图片

使用方法介绍

接口自动化测试python+pytest+request+allure_第10张图片

在测试用例中的使用

allure生成测试报告
1、pytest tests --alluredir report/allure_raw(生成测试数据)
2、allure generate report/allure_raw -o report/allure_report --clean,(生成测试报告)

然后在allure_report下面,通过浏览器打开 或者通过启动服务打开,两种方式: 1.allure open ./report/allure_report 2.allure serve ./report/allure_raw

就可以生成漂亮的页面报告了

后续更新源码,欢迎小伙伴们关注

END

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】

接口自动化测试python+pytest+request+allure_第11张图片

你可能感兴趣的:(技术分享,自动化测试,软件测试,自动化,单元测试,python,测试工程师,软件测试)