概述
- 在自动化测试中,不可避免地需要测试多个环境。为了使自动化测试用例适用于所有测试环境,最简单有效的方法就是通过简单方便地切换主机地址来实现。你甚至可以在环境配置文件中指定数据库配置,这样可以更方便地在测试用例中调用数据库。
- 目前环境配置支持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