pytest + yaml 框架 -51.一套测试环境配置多个数据库解决方案
前言
最近有小伙伴提到,一套测试环境会有多个数据库,该如何解决?
(备注:从v1.2.4 以后新版本不再公开,新功能内部 VIP 学员可以使用,公开版本仅解决bug, 不提供新功能了。)
config 中配置多个数据库连接对象
之前的案例中是在config配置管理配置一个DB_INFO 就可以直接使用内置方法了。
现在可以在config 中配置多个数据库连接对象的实例
只有一个数据库的情况,可以配置的DB_INFO
DB_INFO = {
"host": "127.0.0.1",
"port": 3306,
"user": "root",
"password": "123456",
"database": "aaa"
}
多个数据库情况,在config.py文件内容
from pytest_yaml_yoyo.db import ConnectMysql
class Config:
"""每个环境都有一样的公共配置"""
version = "v1.0"
class TestConfig(Config):
"""测试环境"""
BASE_URL = 'http://192.168.1.8:8201'
db1 = ConnectMysql(**{
"host": "127.0.0.1",
"port": 3306,
"user": "root",
"password": "123456",
"database": "aaa"
})
db2 = ConnectMysql(**{
"host": "192.168.1.8",
"port": 3306,
"user": "root",
"password": "123456",
"database": "bbb"
})
class UatConfig(Config):
"""联调环境"""
BASE_URL = 'http://192.168.1.8:8000'
USERNAME = 'test_uat'
PASSWORD = '123456'
# 环境关系映射,方便切换多环境配置
env = {
"test": TestConfig,
"uat": UatConfig
}
在 TestConfig 中配置了2个连接mysql数据库的示例db1 和 db2
yaml 用例中使用
在yaml 用例中可以通过env对象调用 TestConfig 中配置的对象
- query_sql(sql) 查询sql, 查询无结果返回None, 查询只有一个结果返回dict, 查询多个结果返回list of dict
- execute_sql(sql) 执行sql, 操作新增,修改,删除的sql
1.查询sql示例
${env.db1.query_sql(sql1)}
2.执行sql示例
${env.db1.execute_sql(sql)}
yaml 用例文件示例
config:
variables:
sql1: select * from auth_user where username like 'test';
sql2: select * from auth_user where username like 'yoyo';
test_db_more:
variables:
name1: '${env.db1.query_sql(sql1).username}'
name2: '${env.db2.query_sql(sql2).username}'
validate:
- eq: ['${name1}', 'test']
- eq: ['${name2}', 'yoyo']
执行结果
2023-07-14 07:57:09 [INFO]: 取值表达式: env.db1.query_sql(sql1).username, 取值结果:test <class 'str'>
2023-07-14 07:57:10 [INFO]: 取值表达式: env.db2.query_sql(sql2).username, 取值结果:yoyo <class 'str'>
2023-07-14 07:57:10 [INFO]: 取值表达式: name1, 取值结果:test <class 'str'>
2023-07-14 07:57:10 [INFO]: 取值表达式: name2, 取值结果:yoyo <class 'str'>
2023-07-14 07:57:10 [INFO]: validate 校验内容-> [{'eq': ['test', 'test']}, {'eq': ['yoyo', 'yoyo']}]
2023-07-14 07:57:10 [INFO]: validate 校验结果-> eq: [test, test]
2023-07-14 07:57:10 [INFO]: validate 校验结果-> eq: [yoyo, yoyo]
2023-07-14 07:57:10 [INFO]: export 导出全局变量:{}
PASSED
网易云完整视频课程https://study.163.com/course/courseMain.htm?courseId=1213419817&share=2&shareId=480000002230338
报名咨询wx:283340479 (已报名的同学学习过程中有问题,都可以协助解决)