8s yaml 配置生成_接口测试框架实战(六) | 配置的数据驱动

f7304df1b0b9cd2879b721a288e1825a.png

《Python 测试开发实战进阶》课程,4 个月挑战 BAT 大厂年薪 50W+ Offer,文末加群!

在实际工作中,为了便于维护,对于环境的切换和配置,通常不会使用硬编码的形式完成。在之前文章《多环境下的接口测试》中,已经介绍了如何将环境的切换作为一个可配置的选项。本文会把这部分内容进行重构,使用数据驱动的方式完成多环境的配置。

环境准备

参考《多环境下的接口测试》,将环境配置部分改为数据驱动的模式:

代码如下:

#把host修改为ip,并附加host header

env={
"docker.testing-studio.com": {
"dev": "127.0.0.1",
"test": "1.1.1.2"
},
"default": "dev"
}
data["url"]=str(data["url"]).replace(
"docker.testing-studio.com",
env["docker.testing-studio.com"][env["default"]]
)
data["headers"]["Host"]="docker.testing-studio.com"

实战演示

依然以 YAML 为示例,将所有的环境配置信息放到 env.yml 文件中。如果怕出错,可以先使用 yaml.safe_dump(env) 将 dict 格式的代码转换为 YAML。

如下所示,打印出来的,就是成功转换 YAML 格式的配置信息:

def test_send(self):
env={
"docker.testing-studio.com": {
"dev": "127.0.0.1",
"test": "1.1.1.2"
},
"default": "dev"
}
yaml2 = yaml.safe_dump(env)
print("")
print(yaml2)

将打印出来的内容粘贴到 env.yml 文件中:

docker.testing-studio.com:
dev: "127.0.0.1"
test: "1.1.1.2"
level: 4
default:
"dev"

将环境准备中的代码稍作修改,把 env 变量从一个典型 dict 改为使用 yaml.safe_load 读取  env.yml

# 把host修改为ip,并附加host header
env = yaml.safe_load(open("./env.yml"))
data["url"] = str(data["url"]).\
replace("docker.testing-studio.com",
env["docker.testing-studio.com"][env["default"]])
data["headers"]["Host"] = "docker.testing-studio.com"

如此一来,就可以实现使用数据驱动的方式,通过修改 env.yml 文件来直接修改配置信息。

每日一问

关于测试的数据驱动,你有没有遇到过令你印象深刻的难题,或者可分享的实战经验?欢迎在评论区留言。

更多接口测试框架实战进阶内容,我们在后续文章分享。关注 「霍格沃兹测试学院」公众号,获取更多测试开发干货内容。


推荐学习

霍格沃兹出品 《测试开发实战进阶》课程,资深测试架构师、开源项目作者亲授 BAT 大厂前沿最佳实践。4 个月 20+ 项目实战强化训练,带你一站式掌握 BAT 测试开发工程师必备核心技能(对标阿里P6+,年薪50W+)!学员直推 BAT 名企测试经理,普遍涨薪 50%+!

d72af48c1b0d62cc33a4b3fc41dd06fb.png

?15 期热招中,入群获取完整大纲?

Python 测试开发实战进阶,挑战阿里P6+,年薪50W+!

接口测试框架实战(五) | 测试数据的数据驱动

接口测试框架实战(四) | 通用 API 封装实战

接口测试框架实战(三) | APIObject 模式、原则与应用

接口测试框架实战(二) | 搞定多环境下的接口测试

接口测试框架实战(一) | 流程封装与基于加密接口的测试用例设计

干货 | 一文搞定 pytest 自动化测试框架(一)

干货 | 一文搞定 pytest 自动化测试框架(二)

Python 自动化测试(三): pytest 参数化测试用例构建

Python 自动化测试(四):数据驱动

Python 自动化测试(五): Pytest 结合 Allure 生成测试报告

干货 | 一文搞定 Linux 常用高频命令

1808a0ed6a310eec204d17f0ba0c4cff.png

7370bf7c0e111a33fddd569b5a6c24f4.gif戳“阅读原文”,提升自己的核心竞争力吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机房合作(一):我怎样做组长(敢于承担责任)

导读:小组合作开始了,不怕死的我,揽下了组长的活儿。然后开始了我的漫漫长征路。不过,不怕猪一样的组长,咱有神一样的组员。机房合作到现在,真的感激组员的配合以及对我这个猪组长的指点。接下来&#xff0…

使用JAXB和Jackson从XSD生成JSON模式

在本文中,我演示了一种从XML Schema (XSD)生成JSON Schema的 方法 。 在概述从XML Schema创建JSON Schema的方法的同时,本文还演示了JAXB实现的用法(与JDK 9捆绑在一起的xjc版本2.2.12-b150331.1824 [build 1.9.0-ea-b…

成功人士都有的好习惯

人们常问的一个问题是:那些成功的人是如何获得成功的。这个问题的众多答案之一可能就隐藏在他们的日常习惯之中——但这些习惯到底是什么,它们与成功又有什么关系呢? 习惯是指以固定的方式定期进行的实践或行为模式。在这种情况下,意味着成功人士必须采取日常实践,才有可…

有多个python版本_python 多版本共存

有时候需要在同一台机器上安装多个版本的python常见的解决方式如下:一、1. 下载python2.7和python3.7,然后在C盘下新建一个Python文件夹,python2.7安装到 C:\Python\Python27python3.7安装到 C:\Python\Python372. 检查 系统变量中是否有…

Spring Integration完整示例

本文是我们名为“ Spring Integration for EAI ”的学院课程的一部分。 在本课程中,向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来,您将深入研究Spring Integration的基础知识,例如通道,转换器和适…

为什么要创业

在这个时代,成为一名企业家比以往任何时候都要容易,技术正在缩小世界,打开市场,让许多人在他们梦想的领域中独辟蹊径。 然而,许多拥有好点子的人却害怕采取行动。不要让自己成为那些后悔没有创业的人。如果你想掌控你的生活,实现你的梦想。那么你就有无数的理由创业,我…

heroku_简单的Twitter:Heroku上的Play框架,AJAX,CRUD

heroku因此,重大的公告已经发布– Heroku开始为Play Framework应用程序提供本机支持! 如果您还没有听说过,请在Heroku的博客上查看Jesper Joergensen的帖子 。 因此,对于演示,我将建立一个非常基本的Twitter副本&#…

配置环境_JavaJDK环境变量配置

1.Java环境搭建1.1 JDK与JREJDK(Java Development Kit Java开发工具包)JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中开发工具:编译工具(javac.exe)打包工具(…

僵固式思维 OR 成长式思维

有意无意中,看到这样的一篇文章,觉得非常富有正能量,而且也比较有同感。而且,不仅仅对于职场暂时失落或者失意的人有帮助,就是对学生,也一样的。故特分享,以共勉之。 我想每个新人进入职场之后都…

Linux常用命令(知道啦就赶紧收藏吧)

作为职业黑客,Linux命令不可不知。赶紧拿起你的小本本。 w-显示目前登入系统的用户信息 ab-Apache服务器的性能测试工具 ip-网络配置工具 ld-将目标文件连接为可执行程序 xz-POSIX 平台开发具有高压缩率的工具。 ln-用来为文件创件连接 ar-建立或修改备存文件,或是从备…

在Spring使用AWS SQS创建消息驱动Bean

在我之前的文章中,我展示了一个简单的示例,该示例如何将AWS SQS与Spring Framework结合使用以将消息放入队列中并从队列中读取消息。 在本文中,我将更进一步,并使用Spring创建一个“消息驱动的Bean”,以便对放入队列中…

springboot中得注解_Spring以及SpringBoot中的常用的注解小结

一、注解的基本概念Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。…

Asp.net MVC 的一些总结(二)——图片显示

这里实现的是,如下图片所示的效果: 当然,当你看的下图的时候,请不要自己想当然的认为是简单的html布局!!! (1)业务说明:图片地址是数据库里存的,图…

Spring整合基础

本文是我们名为“ Spring Integration for EAI ”的学院课程的一部分。 在本课程中,向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来,您将深入研究Spring Integration的基础知识,例如通道,转换器和适…

最长子串(FZU2128)

最长子串 Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Practice FZU 2128Description 问题很简单,给你一个字符串s,问s的子串中不包含s1,s2...sn的最长串有多长。Input 输入包含多组数据。第一行为…

微信小程序开发起步

刚开发开发小程序的小伙伴可以参考下面的帖子: https://cloud.tencent.com/developer/article/1190821

virsh 网络设置_KVM使用Network Filters进行虚拟机网络管理 | leon的博客

1.1 Network Filters介绍Network filtering XML为虚拟化系统管理员提供了一种网络流量的过滤规则,系统管理员可以通过配置过滤参数实施和管理对虚拟机网络流量的接受和转发,由于过滤规则不能绕过直接进入虚拟机内,使得一个filter对虚拟用户的…

java 布局管理器_有时在Java中,一个布局管理器是不够的

java 布局管理器在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器。 这通常不是问题,被认为是几乎所有人类已知语言的所有UI开发的常规做法。 但是,大多数情况下,对于UI中的每个面板…

支付宝支付、微信支付(最详细教程)

对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我和我一样的同学,一点思路吧。 第一步&#xff1…

Lintcode: O(1) Check Power of 2

Using O(1) time to check whether an integer n is a power of 2. Example For n4, return trueFor n5, return falseChallenge O(1) timeTags Expand 这道题考察bit manipulation. 1的个数只能有1个才是power of 2. 主要是要注意Integer.MIN_VALUE,这个只有一个1…