From 9904ba8626111df0baca31e62035efc0fc8536c5 Mon Sep 17 00:00:00 2001
From: floraachy <1622042529@qq.com>
Date: Thu, 25 May 2023 15:59:00 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E7=8E=AF=E5=A2=83=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E4=B8=8E=E9=85=8D=E7=BD=AE=E6=95=B0=E6=8D=AE=EF=BC=8C=20?=
=?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=95=B0=E6=8D=AE=E9=9A=94=E7=A6=BB=E5=BC=80?=
=?UTF-8?q?=EF=BC=8C=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9=E4=BA=86=E9=85=8D?=
=?UTF-8?q?=E5=A5=97=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
case_utils/allure_handle.py | 2 +-
case_utils/assert_handle.py | 13 +--
case_utils/case_handle.py | 4 +-
case_utils/get_results_handle.py | 2 +-
case_utils/request_data_handle.py | 3 +-
case_utils/send_result_handle.py | 2 +-
config/case_template.txt | 10 ++-
config/global_vars.py | 83 +++++++------------
config/models.py | 57 +++++++++++++
config/{project_path.py => path_config.py} | 2 +-
config/settings.py | 80 +++++-------------
conftest.py | 55 ++----------
run.py | 32 ++++---
test_case/test_manual_case/test_login_demo.py | 10 +--
14 files changed, 159 insertions(+), 196 deletions(-)
create mode 100644 config/models.py
rename config/{project_path.py => path_config.py} (98%)
diff --git a/case_utils/allure_handle.py b/case_utils/allure_handle.py
index da693f4..281140c 100644
--- a/case_utils/allure_handle.py
+++ b/case_utils/allure_handle.py
@@ -7,7 +7,7 @@
import json
import allure
-from config.global_vars import AllureAttachmentType
+from config.models import AllureAttachmentType
import os
diff --git a/case_utils/assert_handle.py b/case_utils/assert_handle.py
index 16014a7..d39a6d5 100644
--- a/case_utils/assert_handle.py
+++ b/case_utils/assert_handle.py
@@ -12,7 +12,6 @@ from common_utils.data_handle import json_extractor, re_extract
from loguru import logger
from case_utils.request_data_handle import response_type
from common_utils.mysql_handle import MysqlServer
-from config.settings import db_info
def assert_response(response: Response, expected: dict) -> None:
@@ -85,10 +84,10 @@ def assert_response(response: Response, expected: dict) -> None:
"=====================================================")
-def assert_sql(env, expected: dict):
+def assert_sql(db_info, expected: dict):
"""
数据库断言
- :param env: 当前所处环境
+ :param db_info: 数据库配置信息
:param expected: 预期结果,从excel中或者yaml读取、或者手动传入,格式如下:
{
'eq':
@@ -104,11 +103,7 @@ def assert_sql(env, expected: dict):
allure_step(step_title='判断是否存在数据库断言',
content='当前用例无数据库断言')
return
- try:
- # 拿不到数据库配置,则不进行数据库断言
- db = db_info["test" if env.lower() == "test" else "live"]
- db_host = db["db_host"]
- except KeyError:
+ if not db_info:
logger.error("当前环境无数据库配置,跳过数据库断言!")
allure_step(step_title='判断是否存在数据库配置',
content='当前环境无数据库配置,跳过数据库断言!}')
@@ -121,7 +116,7 @@ def assert_sql(env, expected: dict):
if _k == "sql":
try:
# 查询数据库,获取查询结果
- sql_result = MysqlServer(**db).query_one(_v)
+ sql_result = MysqlServer(**db_info).query_one(_v)
logger.info(f'数据库响应断言 -|- SQL:{_v} || 查询结果:{sql_result}')
allure_step(step_title=f'数据库断言',
content=f'SQL:{_v} || 查询结果:{sql_result}')
diff --git a/case_utils/case_handle.py b/case_utils/case_handle.py
index 49b424e..ae12935 100644
--- a/case_utils/case_handle.py
+++ b/case_utils/case_handle.py
@@ -7,10 +7,10 @@
# @Desc: 生成测试用例文件并返回用例数据
import os
-from config.project_path import CASE_TEMPLATE_DIR, DATA_DIR, AUTO_CASE_DIR
+from config.path_config import CASE_TEMPLATE_DIR, DATA_DIR, AUTO_CASE_DIR
from common_utils.excel_handle import ExcelHandle
from common_utils.yaml_handle import YamlHandle
-from config.global_vars import CaseFileType
+from config.models import CaseFileType
from config.settings import CASE_FILE_TYPE
from string import Template
from loguru import logger
diff --git a/case_utils/get_results_handle.py b/case_utils/get_results_handle.py
index 95584ce..e62b185 100644
--- a/case_utils/get_results_handle.py
+++ b/case_utils/get_results_handle.py
@@ -29,7 +29,7 @@ def get_test_results_from_pytest_html_report(html_report_path):
"Python": "python_version",
"开始时间": "start_time",
"项目名称": "project_name",
- "项目环境": "project_env"
+ "项目环境": "run_env"
}
for key, value in enumerate(new_environment_info):
if value in info_mapping:
diff --git a/case_utils/request_data_handle.py b/case_utils/request_data_handle.py
index f77b104..ffd18cc 100644
--- a/case_utils/request_data_handle.py
+++ b/case_utils/request_data_handle.py
@@ -131,6 +131,7 @@ class RequestPreDataHandle:
if self.request_data.get("assert_response", None):
self.request_data["assert_response"] = eval_data_process(
data_replace(content=self.request_data.get("assert_response", None), source=GLOBAL_VARS))
+ # 由于数据库断言里面的变量需要请求响应后进行提取,因此目前不进行处理
# ---------------------------------------- 进行请求,请求后的参数提取处理----------------------------------------#
@@ -148,7 +149,7 @@ class RequestHandle:
"""
response = BaseRequest.send_request(self.case_data)
self.case_data["extract"] = self.after_extract(response, self.case_data.get("extract", None))
- # 从全局变量中获取最新值,替换数据库断言中的参数
+ # 处理数据库断言 - 从全局变量中获取最新值,替换数据库断言中的参数
if self.case_data.get('assert_sql', None):
self.case_data["assert_sql"] = eval_data_process(
data_replace(content=self.case_data["assert_sql"], source=GLOBAL_VARS))
diff --git a/case_utils/send_result_handle.py b/case_utils/send_result_handle.py
index 5a1c479..630c485 100644
--- a/case_utils/send_result_handle.py
+++ b/case_utils/send_result_handle.py
@@ -7,7 +7,7 @@
from loguru import logger
from common_utils.yagmail_handle import YagEmailServe
-from config.global_vars import NotificationType
+from config.models import NotificationType
from config.settings import SEND_RESULT_TYPE, email, ding_talk, wechat, email_subject, email_content, ding_talk_title, \
ding_talk_content, wechat_content
from common_utils.dingding_handle import DingTalkBot
diff --git a/config/case_template.txt b/config/case_template.txt
index f3bf4af..f682a27 100644
--- a/config/case_template.txt
+++ b/config/case_template.txt
@@ -6,20 +6,22 @@ from pytest_html import extras # 往pytest-html报告中填写额外的内容
from common_utils.func_handle import add_docstring
from case_utils.allure_handle import allure_title
import allure
+from config.settings import db_info
+from config.global_vars import GLOBAL_VARS
+
# 用例数据
cases = ${case_data}
+
@allure.story(f'{cases["case_common"]["allure_story"]}')
@pytest.mark.${func_title}
@pytest.mark.auto
@pytest.mark.parametrize("case", cases.get("case_info"))
-def ${func_title}_auto(case, extra, request):
+def ${func_title}_auto(case, extra):
logger.info("-----------------------------START-开始执行用例-----------------------------")
logger.debug(f"当前执行的用例数据:{case}")
try:
- # 获取命令行参数,判断当前处于哪个环境
- env = request.config.getoption("--env")
# 给当前测试方法添加文档注释
add_docstring(case.get("title", ""))(${func_title}_auto)
# 添加用例标题作为allure中显示的用例标题
@@ -36,7 +38,7 @@ def ${func_title}_auto(case, extra, request):
# 进行响应断言
assert_response(response, case_data["assert_response"])
# 进行数据库断言
- assert_sql(env, case_data["assert_sql"])
+ assert_sql(db_info[GLOBAL_VARS["env_key"]], case_data["assert_sql"])
else:
reason = f"标记了该用例为false,不执行\\n"
logger.warning(f"{reason}")
diff --git a/config/global_vars.py b/config/global_vars.py
index e60c1ee..81e5f21 100644
--- a/config/global_vars.py
+++ b/config/global_vars.py
@@ -1,60 +1,37 @@
# -*- coding: utf-8 -*-
-# @Version: Python 3.9
-# @Time : 2023/1/31 14:31
+# @Time : 2023/5/25 14:52
# @Author : chenyinhua
# @File : global_vars.py
# @Software: PyCharm
-# @Desc: 全局变量
-
-from enum import Enum, unique # python 3.x版本才能使用
-
-# 定义一个全局变量,作用于接口关联数据存储
+# @Desc:
+# 定义一个全局变量,用于存储运行过程中相关数据
GLOBAL_VARS = {}
+ENV_VARS = {
+ "common": {
+ "report_title": "自动化测试报告",
+ "project_name": "GitLink 确实开源",
+ "tester": "陈银花",
+ "department": "开源中心"
+ },
+ "test": {
+ # 示例测试环境及示例测试账号
+ "host": "https://testforgeplus.trustie.net/",
+ "login": "auotest",
+ "password": "12345678",
+ "nickname": "AutoTest",
+ "user_id": "84954",
+ "project_id": "",
+ "project": ""
-class CaseFileType(Enum):
- """
- 用例数据可存储文件的类型枚举
- """
- YAML = 1
- EXCEL = 2
- ALL = 0
-
-
-class NotificationType(Enum):
- """ 自动化通知方式 """
- DEFAULT = 0
- DING_TALK = 1
- WECHAT = 2
- EMAIL = 3
- ALL = 4
-
-
-@unique # 枚举类装饰器,确保只有一个名称绑定到任何一个值。
-class AllureAttachmentType(Enum):
- """
- allure 报告的文件类型枚举
- """
- TEXT = "txt"
- CSV = "csv"
- TSV = "tsv"
- URI_LIST = "uri"
-
- HTML = "html"
- XML = "xml"
- JSON = "json"
- YAML = "yaml"
- PCAP = "pcap"
-
- PNG = "png"
- JPG = "jpg"
- SVG = "svg"
- GIF = "gif"
- BMP = "bmp"
- TIFF = "tiff"
-
- MP4 = "mp4"
- OGG = "ogg"
- WEBM = "webm"
-
- PDF = "pdf"
+ },
+ "live": {
+ "host": "https://www.gitlink.org.cn",
+ "login": "******",
+ "password": "******",
+ "nickname": "******",
+ "user_id": "******",
+ "project_id": "",
+ "project": ""
+ }
+}
diff --git a/config/models.py b/config/models.py
new file mode 100644
index 0000000..7a6661c
--- /dev/null
+++ b/config/models.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+# @Version: Python 3.9
+# @Time : 2023/1/31 14:31
+# @Author : chenyinhua
+# @File : models.py
+# @Software: PyCharm
+# @Desc: 全局变量
+
+from enum import Enum, unique # python 3.x版本才能使用
+
+
+class CaseFileType(Enum):
+ """
+ 用例数据可存储文件的类型枚举
+ """
+ YAML = 1
+ EXCEL = 2
+ ALL = 0
+
+
+class NotificationType(Enum):
+ """ 自动化通知方式 """
+ DEFAULT = 0
+ DING_TALK = 1
+ WECHAT = 2
+ EMAIL = 3
+ ALL = 4
+
+
+@unique # 枚举类装饰器,确保只有一个名称绑定到任何一个值。
+class AllureAttachmentType(Enum):
+ """
+ allure 报告的文件类型枚举
+ """
+ TEXT = "txt"
+ CSV = "csv"
+ TSV = "tsv"
+ URI_LIST = "uri"
+
+ HTML = "html"
+ XML = "xml"
+ JSON = "json"
+ YAML = "yaml"
+ PCAP = "pcap"
+
+ PNG = "png"
+ JPG = "jpg"
+ SVG = "svg"
+ GIF = "gif"
+ BMP = "bmp"
+ TIFF = "tiff"
+
+ MP4 = "mp4"
+ OGG = "ogg"
+ WEBM = "webm"
+
+ PDF = "pdf"
diff --git a/config/project_path.py b/config/path_config.py
similarity index 98%
rename from config/project_path.py
rename to config/path_config.py
index 5417817..eb8867b 100644
--- a/config/project_path.py
+++ b/config/path_config.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# @Time : 2023/5/16 11:12
# @Author : chenyinhua
-# @File : project_path.py
+# @File : path_config.py
# @Software: PyCharm
# @Desc:
diff --git a/config/settings.py b/config/settings.py
index 451c4de..755e85a 100644
--- a/config/settings.py
+++ b/config/settings.py
@@ -13,43 +13,29 @@ CASE_FILE_TYPE = 1
# 0表示默认不发送任何通知, 1代表钉钉通知,2代表企业微信通知, 3代表邮件通知, 4代表所有途径都发送通知
SEND_RESULT_TYPE = 0
-# 测试报告的定制化信息展示
-ENV_INFO = {
- "report_title": "自动化测试报告",
- "report_name": "autotestreport_",
- "project_name": "GitLink 确实开源",
- "tester": "陈银花",
- "department": "开源中心"
- }
-
# 指定日志收集级别
LOG_LEVEL = "INFO"
-# ------------------------------------ 测试数据 ----------------------------------------------------#
-test = [
- {
- # 示例测试环境及示例测试账号
- "host": "https://testforgeplus.trustie.net/",
- "login": "auotest",
- "password": "12345678",
- "nickname": "AutoTest",
- "user_id": "84954",
- "project_id": "",
- "project": ""
+# ------------------------------------ 数据库相关配置 ----------------------------------------------------#
+db_info = {
+ "test": {
+ "db_host": "xx.xx.xx.xx",
+ "db_port": 3306,
+ "db_user": "root",
+ "db_pwd": "**********",
+ "db_database": "test**********",
+ "ssh": True,
+ "ssh_host": "xx.xx.xx.xx",
+ "ssh_port": 3306,
+ "ssh_user": "root",
+ "ssh_pwd": "**********"
+
+ },
+ "live": {
}
-]
-live = [
- {
- "host": "https://www.gitlink.org.cn",
- "login": "******",
- "password": "******",
- "nickname": "******",
- "user_id": "******",
- "project_id": "",
- "project": ""
- }
-]
+
+}
# ------------------------------------ 邮件配置信息 ----------------------------------------------------#
@@ -62,7 +48,7 @@ email = {
}
# ------------------------------------ 邮件通知内容 ----------------------------------------------------#
-email_subject = f"{ENV_INFO.get('project_name', None)} 接口自动化报告"
+email_subject = f"接口自动化报告"
email_content = """
各位同事, 大家好:
@@ -70,7 +56,7 @@ email_content = """
---------------------------------------------------------------------------------------------------------------
测试人: ${tester}
所属部门: ${department}
- 项目环境: ${project_env}
+ 项目环境: ${run_env}
---------------------------------------------------------------------------------------------------------------
执行结果如下:
用例运行总数: ${total} 个
@@ -91,7 +77,7 @@ ding_talk = {
}
# ------------------------------------ 钉钉通知内容 ----------------------------------------------------#
-ding_talk_title = f"{ENV_INFO.get('project_name', None)} 接口自动化报告"
+ding_talk_title = f"接口自动化报告"
ding_talk_content = """
各位同事, 大家好:
@@ -99,7 +85,7 @@ ding_talk_content = """
---------------------------------------------------------------------------------------------------------------
#### 测试人: ${tester}
#### 所属部门: ${department}
- #### 项目环境:${project_env}
+ #### 项目环境: ${run_env}
---------------------------------------------------------------------------------------------------------------
#### 执行结果如下:
- 用例运行总数: ${total} 个
@@ -125,7 +111,7 @@ wechat_content = """
--------------------------------
#### 测试人: ${tester}
#### 所属部门: ${department}
- #### 项目环境:${project_env}
+ #### 项目环境: ${run_env}
--------------------------------
#### 执行结果如下:
- 用例运行总数: ${total} 个
@@ -139,23 +125,3 @@ wechat_content = """
**********************************
附件为具体的测试报告,详细情况可下载附件查看, 非相关负责人员可忽略此消息。谢谢。
"""
-# ------------------------------------ 数据库相关配置 ----------------------------------------------------#
-db_info = {
- "test": {
- "db_host": "xx.xx.xx.xx",
- "db_port": 3306,
- "db_user": "root",
- "db_pwd": "**********",
- "db_database": "test**********",
- "ssh": True,
- "ssh_host": "xx.xx.xx.xx",
- "ssh_port": 3306,
- "ssh_user": "root",
- "ssh_pwd": "**********"
-
- },
- "live": {
-
- }
-
-}
diff --git a/conftest.py b/conftest.py
index 1e02eb7..3d3b174 100644
--- a/conftest.py
+++ b/conftest.py
@@ -7,54 +7,12 @@
# @Desc: 这是文件的描述信息
import os.path
-from config.global_vars import GLOBAL_VARS
-from loguru import logger
+from config.global_vars import ENV_VARS, GLOBAL_VARS
import pytest
from py._xmlgen import html # 安装pytest-html,版本最好是2.1.1
from time import strftime
-from config.settings import test, live, ENV_INFO
-# ------------------------------------- START: 配置运行环境 ---------------------------------------#
-def pytest_addoption(parser):
- """
- pytest_addoption 可以让用户注册一个自定义的命令行参数,方便用户将数据传递给 pytest;
- 这个 Hook 方法一般和 内置 fixture pytestconfig 配合使用,pytest_addoption 注册命令行参数,pytestconfig 通过配置对象读取参数的值;
- :param parser:
- :return:
- """
-
- parser.addoption(
- # action="store" 默认,只存储参数的值,可以存储任何类型的值,此时 default 也可以是任何类型的值,而且命令行参数多次使用也只能生效一个,最后一个值覆盖之前的值;
- # action="append",将参数值存储为一个列表,用append模式将可以在pytest命令行方式执行测试用例的同时多次向程序内部传递自定义参数对应的参数值
- "--env", action="store",
- default="test",
- choices=["test", "live"], # choices 只允许输入的值的范围
- type=str,
- help="将命令行参数--env添加到pytest配置对象中,通过--env设置当前运行的环境host"
- )
-
-
-@pytest.fixture(scope="session", autouse=True)
-def get_config(request):
- """
- 从配置对象中读取自定义参数的值
- """
- # 根据指定的环境,获取指定环境的域名以及用例数据文件类型
- env = request.config.getoption("--env")
- if env.lower() == "live":
- config_data = live
- else:
- config_data = test
- for item in config_data:
- for k, v in item.items():
- GLOBAL_VARS[k] = v
-
- logger.debug(f"当前环境变量为:{GLOBAL_VARS}")
-
-
-# ------------------------------------- END: 配置运行环境 ---------------------------------------#
-
# ------------------------------------- START: 报告处理 ---------------------------------------#
def pytest_collection_modifyitems(items):
"""# 测试用例执行收集完成时,将收集到的item的name和nodeid的中文显示在控制台上"""
@@ -79,7 +37,7 @@ def pytest_html_report_title(report):
"""
修改报告标题
"""
- report.title = ENV_INFO.get('report_title', "")
+ report.title = f'{ENV_VARS["common"]["project_name"]} {ENV_VARS["common"]["report_title"]}'
def pytest_configure(config):
@@ -87,7 +45,7 @@ def pytest_configure(config):
# 在测试运行前,修改Environment部分信息,配置测试报告环境信息
"""
# 给环境表 添加项目名称及开始时间
- config._metadata["项目名称"] = ENV_INFO.get('project_name', "")
+ config._metadata["项目名称"] = ENV_VARS["common"]["project_name"]
config._metadata['开始时间'] = strftime('%Y-%m-%d %H:%M:%S')
# 给环境表 移除packages 及plugins
config._metadata.pop("Packages")
@@ -100,16 +58,15 @@ def pytest_sessionfinish(session, exitstatus):
在测试运行后,修改Environment部分信息
"""
# 给环境表 添加 项目环境
- env = session.config.getoption("--env") # 可以获取到命令行参数指定的环境
- session.config._metadata['项目环境'] = {GLOBAL_VARS.get("host", env)}
+ session.config._metadata['项目环境'] = GLOBAL_VARS.get("host", "")
def pytest_html_results_summary(prefix, summary, postfix):
"""
修改Summary部分的信息
"""
- prefix.extend([html.p(f'测试人员:{ENV_INFO.get("tester", "")}')])
- prefix.extend([html.p(f'所属部门: :{ENV_INFO.get("department", "")}')])
+ prefix.extend([html.p(f'测试人员:{ENV_VARS["common"]["tester"]}')])
+ prefix.extend([html.p(f'所属部门: :{ENV_VARS["common"]["department"]}')])
def pytest_html_results_table_header(cells):
diff --git a/run.py b/run.py
index 3789cf1..02d68be 100644
--- a/run.py
+++ b/run.py
@@ -18,12 +18,13 @@
import os
import shutil
import pytest
-from config.project_path import REPORT_DIR, LOG_DIR, AUTO_CASE_DIR, CONF_DIR, LIB_DIR, ALLURE_RESULTS_DIR, \
+from config.path_config import REPORT_DIR, LOG_DIR, AUTO_CASE_DIR, CONF_DIR, LIB_DIR, ALLURE_RESULTS_DIR, \
ALLURE_HTML_DIR
from case_utils.case_handle import get_case_data
from loguru import logger
import click
-from config.settings import LOG_LEVEL, ENV_INFO
+from config.settings import LOG_LEVEL
+from config.global_vars import GLOBAL_VARS, ENV_VARS
from datetime import datetime
from case_utils.platform_handle import PlatformHandle
from case_utils.get_results_handle import get_test_results_from_pytest_html_report, \
@@ -81,8 +82,10 @@ def run(env, m, report):
"--reruns=3", "--reruns-delay=2"
"""
arg_list = []
- if env.lower() == "live":
- arg_list.append("--env=live")
+ # 根据指定的环境参数,将运行环境所需相关配置数据保存到GLOBAL_VARS
+ GLOBAL_VARS["env_key"] = env.lower()
+ for k, v in ENV_VARS[env.lower()].items():
+ GLOBAL_VARS[k] = v
# 执行指定测试用例
if m is not None:
arg_list.append(f"-m {m}")
@@ -105,27 +108,32 @@ def run(env, m, report):
os.popen(cmd).read()
logger.debug("-------美化allure测试报告-------")
AllureReportBeautiful(allure_html_path=ALLURE_HTML_DIR).set_windows_title(
- new_title=ENV_INFO["project_name"])
- AllureReportBeautiful(allure_html_path=ALLURE_HTML_DIR).set_report_name(new_name=ENV_INFO["report_title"])
+ new_title=ENV_VARS["common"]["project_name"])
+ AllureReportBeautiful(allure_html_path=ALLURE_HTML_DIR).set_report_name(
+ new_name=ENV_VARS["common"]["report_title"])
logger.debug("-------allure测试报告生成完毕,开始发送测试报告-------")
# 往allure测试报告中写入环境配置相关信息
- ENV_INFO["project_env"] = env
- AllureReportBeautiful(allure_html_path=ALLURE_HTML_DIR).set_report_env_on_html(env_info=ENV_INFO)
+ env_info = ENV_VARS["common"]
+ env_info["run_env"] = GLOBAL_VARS.get("host", env)
+ AllureReportBeautiful(allure_html_path=ALLURE_HTML_DIR).set_report_env_on_html(
+ env_info=env_info)
# 从allure-html测试报告获取测试结果
results = get_test_results_from_from_allure_report(ALLURE_HTML_DIR)
# 复制http_server.exe以及双击查看报告.bat文件到allure-html根目录下,用于支撑电脑在未安装allure服务的情况下打开allure-html报告
# 注意:ZIP文件的名称包含某些特殊字符,会导致无法使用.bat文件打开allure-html报告, 例如空格,/ 等
allure_config_path = os.path.join(CONF_DIR, "allure_config")
- copy_file(src_file_path=os.path.join(allure_config_path, [i for i in os.listdir(allure_config_path) if i.endswith(".exe")][0]),
+ copy_file(src_file_path=os.path.join(allure_config_path,
+ [i for i in os.listdir(allure_config_path) if i.endswith(".exe")][0]),
dest_dir_path=ALLURE_HTML_DIR)
- copy_file(src_file_path=os.path.join(allure_config_path, [i for i in os.listdir(allure_config_path) if i.endswith(".bat")][0]),
+ copy_file(src_file_path=os.path.join(allure_config_path,
+ [i for i in os.listdir(allure_config_path) if i.endswith(".bat")][0]),
dest_dir_path=ALLURE_HTML_DIR)
# 压缩allure-html报告为一个压缩文件zip
- allure_zip_path = os.path.join(REPORT_DIR, f'{ENV_INFO["report_name"]}{str(current_time)}.zip')
+ allure_zip_path = os.path.join(REPORT_DIR, f'autotest_{str(current_time)}.zip')
zip_file(in_path=ALLURE_HTML_DIR, out_path=allure_zip_path)
send_result(results=results, attachment_path=allure_zip_path)
else:
- report_path = os.path.join(REPORT_DIR, ENV_INFO["report_name"] + str(current_time) + ".html")
+ report_path = os.path.join(REPORT_DIR, "autotest_" + str(current_time) + ".html")
pytest_html_config_path = os.path.join(CONF_DIR, "pytest_html_config")
report_css = os.path.join(pytest_html_config_path, "pytest_html_report.css")
arg_list.extend([f'--html={report_path}', f"--css={report_css}"])
diff --git a/test_case/test_manual_case/test_login_demo.py b/test_case/test_manual_case/test_login_demo.py
index 9d628bc..a33cddd 100644
--- a/test_case/test_manual_case/test_login_demo.py
+++ b/test_case/test_manual_case/test_login_demo.py
@@ -10,7 +10,7 @@
import pytest
import os
from common_utils.yaml_handle import YamlHandle
-from config.project_path import DATA_DIR
+from config.path_config import DATA_DIR
from case_utils.assert_handle import assert_response, assert_sql
from loguru import logger
from case_utils.request_data_handle import RequestPreDataHandle, RequestHandle
@@ -18,6 +18,8 @@ from pytest_html import extras # 往pytest-html报告中填写额外的内容
from common_utils.func_handle import add_docstring
from case_utils.allure_handle import allure_title
import allure
+from config.settings import db_info
+from config.global_vars import GLOBAL_VARS
# 读取用例数据
cases = YamlHandle(filename=os.path.join(DATA_DIR, "test_login_demo.yaml")).read_yaml
@@ -26,12 +28,10 @@ cases = YamlHandle(filename=os.path.join(DATA_DIR, "test_login_demo.yaml")).read
@allure.story(f'{cases["case_common"]["allure_story"]}')
@pytest.mark.test_login_demo
@pytest.mark.parametrize("case", cases.get("case_info"))
-def test_login_demo(case, extra, request):
+def test_login_demo(case, extra):
logger.info("-----------------------------START-开始执行用例-----------------------------")
logger.debug(f"当前执行的用例数据:{case}")
try:
- # 获取命令行参数,判断当前处于哪个环境
- env = request.config.getoption("--env")
# 给当前测试方法添加文档注释
add_docstring(case.get("title", ""))(test_login_demo)
# 添加用例标题作为allure中显示的用例标题
@@ -48,7 +48,7 @@ def test_login_demo(case, extra, request):
# 进行响应断言
assert_response(response, case_data["assert_response"])
# 进行数据库断言
- assert_sql(env, case_data["assert_sql"])
+ assert_sql(db_info[GLOBAL_VARS["env_key"]], case_data["assert_sql"])
else:
reason = f"标记了该用例为false,不执行\\n"
logger.warning(f"{reason}")