前言
最近有小伙伴提到,一套测试环境会有多个数据库,该如何解决?
config 中配置多个数据库连接对象
之前的案例中是在config配置管理配置一个DB_INFO 就可以直接使用内置方法了。 现在可以在config 中配置多个数据库连接对象的实例
只有一个数据库的情况,可以配置的DB_INFO
代码语言:javascript复制 DB_INFO = {
"host": "127.0.0.1",
"port": 3306,
"user": "root",
"password": "123456",
"database": "aaa"
}
多个数据库情况,在config.py文件内容
代码语言:javascript复制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示例
代码语言:javascript复制${env.db1.query_sql(sql1)
2.执行sql示例
代码语言:javascript复制${env.db1.execute_sql(sql)
yaml 用例文件示例
代码语言:javascript复制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']
执行结果
代码语言:javascript复制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