pytest-ddreport(环境配置)

本文介绍了如何在Pytest项目中使用env.json文件管理不同环境的配置,如接口主机和数据库连接信息,以便于在测试用例中动态切换。通过`--envpath`和`--envname`参数,实现了测试环境的灵活选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

  • 在自动化测试中,不可避免地需要测试多个环境。为了使自动化测试用例适用于所有测试环境,最简单有效的方法就是通过简单方便地切换主机地址来实现。你甚至可以在环境配置文件中指定数据库配置,这样可以更方便地在测试用例中调用数据库。
  • 目前环境配置支持4个字段:env_name(环境名称-唯一性)、host(接口主机)、mysql(MySQL数据库配置)和pg(PG数据库配置)。

说明

本文是在上一篇文章 <pytest-ddreport(入门篇)> 基础上编写

项目结构

my_project/
│
├── Cases/
│   └── test_demo1.py
│
├── reports/
│
├── env.json
├── conftest.py
└── main.py

项目下多了个env.json文件,当然,文件名你可以随便命名

环境配置编写(env.json)

[
  {
    "env_name": "测试环境",
    "host": "http://127.0.0.1:8000",
    "mysql": {"host": "10.20.1.1", "port": 3306, "user": "root", "password": "123456"},
    "pg": {"host": "10.30.2.2", "port": 3307, "user": "pg", "password": "123456", "database": "test"}
  },
  {
    "env_name": "开发环境",
    "host": "https://100.0.10.100",
    "mysql": {"host": "100.20.1.100", "port": 3306, "user": "root", "password": "123456"},
    "pg": {"host": "100.30.2.200", "port": 3307, "user": "pg", "password": "123456", "database": "test"}
  }
]

关联环境(mian.py)

# main.py
import pytest


if __name__ == "__main__":

    pytest.main(
        [
            '--ddreport=reports/test.html',     # 测试报告路径
            '--title=API自动化测试',             # 测试报告标题
            '--desc=测试测试测试',               # 测试报告描述
            '--tester=duanliangcong',           # 测试人员
            '--apiresult=1',                    # 查看成功的用例详情
            '--envpath=env.json',               # 环境配置文件路径
            '--envname=测试环境',                # 环境名称
            'Cases/test_demo1.py'               # 需要执行的用例
        ]
    )

上面代码中通过-envpath指定环境配置文件的路径,通过--envname指定环境的名称

测试用例演示

# test_demo1.py
class TestDemo:

    def test_1(self, drt):
        """登录接口"""
        url = "/api/v3/user/login/"
        raw = {"username": "admin", "password": "123456"}
        r = drt.api.query("post", url, json=raw)
        assert r.json()["code"] == 200

    def test_2(self, drt):
        """mysql数据库演示"""
        sql = drt.mysql.query("SELECT id,module_name,version FROM themis.sql_version")
        print("mysql的返回内容:", sql)

    def test_3(self, drt):
        """pg数据库演示"""
        sql = drt.pg.query("SELECT * FROM PUBLIC.tb_right_group")
        print("pg的返回内容:", sql)

测试报告

运行main.py后即可产生新的测试报告-test.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值