pytest接口测试自动化框架

这篇具有很好参考价值的文章主要介绍了pytest接口测试自动化框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

pytest简介及安装

pytest的使用规则

pytest运行方式

主函数方式

命令行方式

跳过、标记及预期失败特殊场景处理

pytest前后置、夹具

pytest高级用法fixture

pytest接口断言

pytest结合allure-pytest生成allure测试报告


pytest简介及安装

        谈起用例管理框架:python中的unittest、pytest;java中的testng 、junit都是比较熟悉的,本篇文章从安装到使用到结合插件多样化等层面来学习和介绍pytest这个自动化测试框架。

        使用pytest来作为我们的用例管理框架,自然是因为它存在很多优势,总的来说就是:简单灵活,容易上手、支持参数化,如下列出:

        1. 能够支持简单的单元测试和复杂的功能测试,它可以和所以的自动化测试工具selenium、、appium结合实现web自动化、接口自动化(pytest+requests)以及app自动化

        2. 跳过用例以及失败用例重跑,测试用例的skip和xfail处理

        3. 结合allure生成美观的测试报告

        4. 和jenkins持续集成

        5. 有很多的强大的插件

                pytest-html 用于生成html测试报告

                pytest-xdist 多线程运行

                pytest-ordering 改变测试用例的执行顺序

                pytest-rerunfailures 失败用例重跑

                allure-pytest 生成allure测试报告

                pytest-selenium 集成selenium

        我们一般实际项目开发当中都会使用requrement.txt文件保存插件名称,然后通过pip install -r requirements.txt进行安装所以插件。

        这么好用的框架,安装是第一步,我们使用以下命令进行安装。

##安装
pip install pytest 
##查看版本号
pytest --version

pytest的使用规则

        安装完成,就可以使用该框架来帮助我们进行更高效率的测试,在测试前,我们必须明白使用该框架要遵循的一些规则:

  • py文件名必须以test_开头或者_test结尾
  • 类名必须以Test开头
  • 测试用例(类内的方法)/函数名(类外)必须以test_开头

        只有遵循这些规则,我们编写的用例pytest才能认识。才能更好的发挥它的作用:发现测试用例、执行测试用例、判断测试结果、生成测试报告。

pytest运行方式

        pytest的运行方式有两种:主函数方式和命令行方式。

主函数方式

if_name_ == '_main_':
    pytest.main(['-vs'])

        这种方式运行,有一些命令需要知道

                -v 输出更加详情的运行信息

                -s 输出调试信息

                -n=数字 多线程运行

                --reruns=数字 失败用例重新运行

                --html=./report.html 生成html报告

命令行方式

  • 运行包: pytest (pytest会自动检索当前目录下所有符合规则的测试用例)
  • 运行一个模块:pytest -vs test.py
  • 只执行某一条测试用例:pytest 目录/模块.py::类名::用例名

        使用命令行方式运行测试用例,也可以添加相应的参数,

                pytest --help: 获取所有参数列表

                -x: 用例一旦失败(fail/error),就立刻停止

                -m: 标记用例

                -k: 执行包含某个关键字的测试用例

                -v: 打印详细日志

                -s 打印输出日志(一般-vs一块使用)

                --collect-only:(测试平台,pytest 自动导入功能)

这些参数也不需要背过,但是要有个印象,需要的时候再进行查找,来辅助我们测试。

跳过、标记及预期失败特殊场景处理

当我们需要跳过一些测试用例时,可以这么操作:

  • ship: 始终跳过该用例
    • 方式1: @pytest.mark.skp(reason="代码没有实现")
    • 方式2:在测试用代码中添加判断的语句def test_demo(): if not login(): pytest.skip("未登录无法运行该用例")
  • skipif: 遇到特定情况跳过该测试用例,需要给定条件@pytest.mark.skipif(条件="", reason="打印提示信息内容")

当然需要标记一些用例的场景也很多:

  • 场景:只执行符合要求的某一部分用例,把项目分为多个模块,然后指定模块名称执行
  • 解决:在测试用例的上方加上pytest装饰器:@pytest.mark.标签名
  • 执行 -m 标记自定义的相关用例
    • pytest -s test_mark.py -m=标签名
    • pytest -s test_mark.py -m 标签名
    • pytest -s test_mark.py -m "not 标签名" (not:逻辑运算,表示不是标签名的都去执行

xfail: 遇到特殊情况,产生一个“期望失败”输出。

pytest前后置、夹具

        pytest可以实现前后置的效果。

        setup/teardown 在每个用例之前和之后执行一次

        setup_class/teardown_class 在每个类之前和之后执行一次

也可以实现部分用例的前置:

        @pytest.fixtrue(scope="作用域",params="数据驱动",autouse="自动执行",ids="自定义参数名字", name="重命名")

        作用域:function(默认)、class、module、package/session

        params :参数化( 支持,列表,元祖,字典列表,字典元祖)

        autouse=True :自动使用,默认False

        ids:当使用params参数化时 ,给每一个值设置一个交量名

        name:给表示的是被@pytest fixture标记的方法取一个别名

pytest高级用法fixture

1. fixture 作用

        Fixture是在测试函数运行前后,由pytest执行的外壳函数,代码可以定制,满足多变的测试需求,功能包括:

        定于传入测试中的数据集

        配置测试前系统的初始状态

        为批量测试提供数据源等

Fixture是pytest用于将测试前后进行预备,清理工作的代码分类核心测试逻辑的一种机制

2.  fixture用法

        类似setup teardown功能,但比setup teardown更灵活

        直接通过函数名调用或者装饰去@pytest.mark.usefixtures('test1')

        允许使用多个Fixture

        使用autouse自动应用,如果由返回值,需要穿fixture函数名

        作用域 session>module>class>function

3.  pytest yield

        以上fixture记录的仅仅是setup,即测试用例运行前的操作,如果需要加上teardown的操作,需要在fixture函数中加入 yield

pytest接口断言

assert 'access_token' in rep.json() and 1==1

pytest结合allure-pytest生成allure测试报告

1. 官网下载allure:https://github.com/allure-framework/allure2/releases

放到没有中文路径下,然后把bin目录配置到环境变量的path里面

配置完成,allure --version 可查看版本

2. 重启pycharm,通过allure --version 验证;安装allure-pytest

3. 执行命令

  • 生成临时的json文件的报告 在pytest.ini里加命令 addopts = -vs --alluredir ./temp
  • 通过临时的json文件生成allure报告 在main函数里 os.system("allure generate ./reports -clean")

4.allure报告可进行各种美化和定制

以上是学习记录,持续加更...今天好热,喝了芒果蛋蜜汁~文章来源地址https://www.toymoban.com/news/detail-455920.html

到了这里,关于pytest接口测试自动化框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 接口自动化测试框架(pytest+allure+aiohttp+ 用例自动生成)

    近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数量一般都很多,而且会越来越多,所以提高执行效率很有必要 接口测试的用例其实

    2024年02月07日
    浏览(61)
  • 接口自动化测试框架开发(pytest+allure+aiohttp+ 用例自动生成)

    近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数量一般都很多,而且会越来越多,所以提高执行效率很有必要 接口测试的用例其实

    2024年01月23日
    浏览(55)
  • 接口自动化测试框架开发 (pytest+allure+aiohttp+ 用例自动生成)

    目录 前言: 第一部分(整个过程都要求是异步非阻塞的) 读取 yaml 测试用例 http 请求测试接口 收集测试数据 第二部分 动态生成 pytest 认可的测试用例 后续(yml 测试文件自动生成) 前言: 开发一个接口自动化测试框架是一个很好的方式,可以提高测试效率和准确性。在这

    2024年02月16日
    浏览(61)
  • 一个简单的接口自动化测试框架:Python+Requests+Pytest+Allure

    project:api_test ——api_keyword ————api_key.py:接口驱动类 ——case ————test_cases.py:测试套件和测试用例 ——report_allure( 无需创建 ):allure报告 ——result( 无需创建 ):测试用例运行结果 ——VAR ————VAR.py:常量类 conftest.py:项目级别fixture main.py:主函数

    2024年02月03日
    浏览(72)
  • 软件测试Pytest实现接口自动化应该如何在用例执行后打印日志到日志目录生成日志文件?

    Pytest可以使用内置的logging模块来实现接口自动化测试用例执行后打印日志到日志目录以生成日志文件。以下是实现步骤: 1、在pytest配置文件(conftest.py)中,定义一个日志输出路径,并设置logging模块。 2、在测试用例中调用logging模块,输入需要生成的日志信息。 3、运行p

    2024年02月10日
    浏览(62)
  • Python+Pytest+Allure+Git+Jenkins数据驱动接口自动化测试框架

    一、接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,RPC,Webservice,Dubbo,RESTful等类型。 接口测试流程 1、需求评审,熟悉业务和需求 2、开发提供接口文档 3、编写接口测

    2024年02月08日
    浏览(82)
  • (Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建

    前面,已经学习了如何用SpringBoot写接口以及与Mysql数据库进行交互,具体可查阅下面的这篇博客,今天学习一下基于Python的接口自动化测试框架的搭建,主要包括以下内容:利用request库发送请求,请求数据参数化处理,还涉及到数据库(Mysql+MongDB)方面的交互,包括如何取数

    2024年02月13日
    浏览(161)
  • Python+Requests+Pytest+Excel+Allure 接口自动化测试项目实战【框架之间的对比】

            --------UnitTest框架和PyTest框架的简单认识对比与项目实战-------- 定义: Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架。 Pytest是Python的另一个第三方单元测

    2024年02月09日
    浏览(58)
  • 震惊!强大的接口自动化测试框架2.0,unittest与pytest无缝穿插对接,可以像postman一样编写代码

    接口自动化测试项目2.0 本框架主要是基于 Python + unittest + ddt + HTMLTestRunner + log + excel + mysql + 企业微信通知 + Jenkins 实现的接口自动化框架。 项目参与者: 陈勇志 技术支持邮箱: 262667641@qq.com 个人微信: Testing_player 个人博客地址: https://home.cnblogs.com/u/Nephalem-262667641 微信公众号:测

    2024年02月12日
    浏览(46)
  • Pytest自动化测试框架---(单元测试框架)

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发一些功能(报告,初始化webdriver,或者http请求方法)便可实现。 但自

    2024年02月14日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包