前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest + yaml 框架 -51.一套测试环境配置多个数据库解决方案

pytest + yaml 框架 -51.一套测试环境配置多个数据库解决方案

作者头像
上海-悠悠
发布2023-08-22 12:08:15
1580
发布2023-08-22 12:08:15
举报

前言

最近有小伙伴提到,一套测试环境会有多个数据库,该如何解决?

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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • config 中配置多个数据库连接对象
  • yaml 用例中使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档