《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%+!
?15 期热招中,入群获取完整大纲?
Python 测试开发实战进阶,挑战阿里P6+,年薪50W+!
接口测试框架实战(五) | 测试数据的数据驱动
接口测试框架实战(四) | 通用 API 封装实战
接口测试框架实战(三) | APIObject 模式、原则与应用
接口测试框架实战(二) | 搞定多环境下的接口测试
接口测试框架实战(一) | 流程封装与基于加密接口的测试用例设计
干货 | 一文搞定 pytest 自动化测试框架(一)
干货 | 一文搞定 pytest 自动化测试框架(二)
Python 自动化测试(三): pytest 参数化测试用例构建
Python 自动化测试(四):数据驱动
Python 自动化测试(五): Pytest 结合 Allure 生成测试报告
干货 | 一文搞定 Linux 常用高频命令
戳“阅读原文”,提升自己的核心竞争力吧!