接口测试框架pytest+yaml之yaml文件的相互引用

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

前言

在写测试框架的一篇文章中提到过(python接口测试框架选择之pytest+yaml+Allure_亲爱的阿满啊的博客-CSDN博客_pytest yaml),yaml可以用来编写测试数据,yaml文件间的互相引用使测试数据的编写更灵活。比如接口之间会存在一些共性,存在上传的字段相同,这些相同的字段可以写在yaml文件里,需要上传这些字段的接口,它们的测试数据直接引用这个yaml文件。本文讲解使用pyyaml库,进行yaml文件间的引用。

一、yaml文件之间的相互引用

场景:所有接口都需要上传id,name,account三个字段
思路分析:将id,name,account三个字段写在一个文件里,其它接口引用这个文件。

代码编写

1.先安装pyyaml库,

pip install pyyaml-include

2.新建一个yaml文件,user.yaml

id: 12
name: "test"
account: "1234"

3.一个接口的请求数据的文件名为AllApi.yaml,在文件里引用user.yaml文件

ecpm: 100
type: 1
userInfo: !include user.yaml

4.查看文件的路径,后续需要传入路径
user.yaml:data/base/user.yaml
AllApi.yaml: data/aboutUser/AllApi.yaml

5.将user.yaml文件加入AllApi.yaml

basePath = "data/base"
rootfile = "data/aboutUser/AllApi.yaml"

YamlIncludeConstructor.add_to_loader_class(loader_class=yaml.FullLoader, base_dir=basePath)
    with open(rootfile) as f:
        data = yaml.load(f, Loader=yaml.FullLoader)

6.可以将上面的代码写成工具类,然后返回data

#rootfile:AllApi.yaml的文件路径data/aboutUser/AllApi.yaml
#basePath:user.yaml的根目录路径data/base
def add_base_yaml(rootfile,basePath):
    YamlIncludeConstructor.add_to_loader_class(loader_class=yaml.FullLoader, base_dir=basePath)
    with open(rootfile) as f:
        data = yaml.load(f, Loader=yaml.FullLoader)
    return data

打印结果

{'ecpm': 100, 'type': 1, 'userInfo': {'id': 12, 'name': 'test', 'account': '1234'}}

7.如果在data/base下还有其它文件,则都可以同时引用,假设info.yaml也在data/base这个目录下,在AllApi.yaml也可以引用。用第6点写的根据类就可以读取到数据。

ecpm: 100
type: 1
userInfo: !include userInfo.yaml
wxInfo: !include info.yaml

如何定basePath的路径

由第7点可以明白,引入的文件必须是basePath路径下的文件。假如AllApi.yaml需要同时引用两个文件,一个是userInfo.yaml,另一个文件是test.yaml,test文件路径为:data/aboutTest/TestApi.yaml,则add_base_yaml(rootfile,basePath)的basePath传入"data/"。yaml文件写为

ecpm: 100
type: 1
userInfo: !include base/userInfo.yaml
Info: !include aboutTest/info.yaml

打印结果

{'ecpm': 100, 'type': 1, 'userInfo': {'id': 12, 'name': 'test', 'account': '1234'}, 'Info': {'testInfo': 'test'}}

basePath是引入文件的共同根目录,可以按照整个项目的实际情况去定basePath。

二、yaml文件内部之间的相互引用

&符号标记锚点来进行引用
代码示例

name: test
sign1: &sign1 # &符号标记锚点1
  user: "lili"
  pw: "1234"
sign2: &sign2 # &符号标记锚点2
  id: "1"
  index: 5
test1:
  <<: *sign1 # 方式一:使用 <<: * 符号引用
test2: *sign2 # 方式二:直接使用*号引用

打印

{'name': 'test', 'sign1': {'user': 'lili', 'pw': '1234'}, 'sign2': {'id': '1', 'index': 5}, 'test1': {'user': 'lili', 'pw': '1234'}, 'test2': {'id': '1', 'index': 5}}

三、yaml文件内部间相互引用

name: test
sign1: &sign1
  user: !include base/baseUserInfo.yaml
  pw: !include base/wxUserInfo.yaml
sign2: &sign2
  id: "1"
  index: 5
test1:
  <<: *sign1
test2: *sign2

打印

{'name': 'test', 'sign1': {'user': {'prdid': '2', 'phoneid': '123', 'eight_user_type': 0}, 'pw': {'appOpenid': 'a_Eef', 'unionId': 'oup', 'nickname': 'man'}}, 'sign2': {'id': '1', 'index': 5}, 'test1': {'user': {'prdid': '2', 'phoneid': '123', 'eight_user_type': 0}, 'pw': {'appOpenid': 'a_Eef', 'unionId': 'oup', 'nickname': 'man'}}, 'test2': {'id': '1', 'index': 5}}

以上就是yaml的常用用法,掌握以后,会在编写测试数据的yaml文件时更得心应手。文章来源地址https://www.toymoban.com/news/detail-400305.html

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

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

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

相关文章

  • 自动化测试(三):接口自动化pytest测试框架

    API:Application Programming Interface 接口自动化按照自动化的工具可分为 基于 接口测试工具 的接口自动化 eg1:Postman+Newman+git/Svn+Jenkins(基于Javascript语言)接口自动化 Postman :创建和发送 API 请求,并对响应进行断言和验证。 Newman : Postman 的命令行工具,它允许测试人员在没有界

    2024年02月10日
    浏览(42)
  • 如何编写接口自动化框架系列通过yaml来管理测试用例(四)

    本文是接口自动化测试框架系列篇的第四篇 ,主要介绍yaml包的使用 。自动化测试的本质是将功能测试用例交给代码去 目录 1. yaml介绍? 2.python中的yaml包 3.项目中使用yaml包 4 项目总结 执行 ,测试人员往往是在自动化框架添加对应的测试用例即可(也叫测试脚本)。而维护测试

    2024年02月07日
    浏览(46)
  • python pytest 最简单的接口自动化测试框架

    最近由于工作的原因,需要开发一个接口自动化测试框架,使用pytest框架、数据驱动,并展示直观的测试报告。 具体的开发过程如下: 安装必要的库: pytest:用于编写和运行测试用例。 requests:用于发送 HTTP 请求。 pytest-html:用于生成 HTML 格式的测试报告。 可以使用以下命

    2024年03月19日
    浏览(92)
  • 接口自动化测试实战之pytest框架+allure讲解

    本文章主要会讲解Python中pytest框架的讲解,介绍什么是pytest、为何要测试、为何使用以及参考和扩展等等,话不多说,咱们直接进入主题哟。 pytest是一款单元测试框架,在编程过程中,单元主要指的是代码中最小的组成部分,例如函数或类,在面向对象中,最小的单元就是类

    2024年02月05日
    浏览(38)
  • 基于Pytest+Allure+Excel的接口自动化测试框架

    Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。 Allure 是由 Java 语言开发的,支持 Pytest,JaveScript、PHP、Ruby 等。 从 DEV/QA 的角

    2024年02月09日
    浏览(53)
  • 接口测试框架pytest+allure+jenkins之jenkins环境安装配置步骤

    pytest+Allure+jenkins,可以定时跑测试用例,生成测试报告并发送邮箱,关联git,自动更新git最新代码,解放双手。但是对于第一次接触jenkins的测试人员,装jenkins环境和配置job等步骤较繁琐,很容易出错。本文将记录主要的Jenkins安装和配置步骤,以及容易踩坑的地方。 1. 检查是

    2024年02月03日
    浏览(40)
  • 一个简单的接口自动化测试框架: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日
    浏览(42)
  • 接口自动化测试框架(pytest+allure+aiohttp+ 用例自动生成)

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

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

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

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

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

    2024年01月23日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包