项目名称、测试人员名称动态化

This commit is contained in:
余少琪 2022-01-05 16:24:04 +08:00
parent 1148b7af9e
commit 6ffc901b09
16 changed files with 43 additions and 85 deletions

View File

@ -8,6 +8,8 @@ ProjectName:
- 余少琪的框架
-
# 测试人员名称,作用于自动生成代码的作者,以及发送企业微信、钉钉通知的测试负责人
TestName: 余少琪
# 域名1
merchant: https://redisdatarecall.csdn.net
# 域名2

View File

@ -1,29 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022-01-05 15:45:56
# @Author : 余少琪
from tools.requestControl import RequestControl
from tools.yamlControl import GetCaseData
from setting import ConfigHandler
class DateDemo(object):
@staticmethod
def dateDemo(inData):
"""
测试接口
:param inData:
:return:
"""
resp = RequestControl().HttpRequest(inData['method'], inData)
return resp
if __name__ == '__main__':
path = GetCaseData(ConfigHandler.data_path + 'DateDemo.yaml').get_yaml_case_data()[0]
data = DateDemo().dateDemo(path)
print(data)

View File

@ -23,3 +23,5 @@
%(levelname)-8s2022-01-05 14:29:29,345 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs\error.log:conftest.py:94 执行失败用例数:0
%(levelname)-8s2022-01-05 14:41:23,821 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs\error.log:conftest.py:94 执行失败用例数:0
%(levelname)-8s2022-01-05 14:41:23,821 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs\error.log:conftest.py:94 执行失败用例数:0
%(levelname)-8s2022-01-05 16:20:15,786 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/error.log:conftest.py:95 执行失败用例数:0
%(levelname)-8s2022-01-05 16:20:15,786 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/error.log:conftest.py:95 执行失败用例数:0

View File

@ -375,3 +375,29 @@
数据库断言数据: {'sql': None}
函数名称: _DoRequest
=================================================================================
%(levelname)-8s2022-01-05 16:20:14,772 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:run.py:19
_ _ _ _____ _
__ _ _ __ (_) / \ _ _| |_ __|_ _|__ ___| |_
/ _` | '_ \| | / _ \| | | | __/ _ \| |/ _ \/ __| __|
| (_| | |_) | |/ ___ \ |_| | || (_) | | __/\__ \ |_
\__,_| .__/|_/_/ \_\__,_|\__\___/|_|\___||___/\__|
|_|
开始执行余少琪的框架项目...
%(levelname)-8s2022-01-05 16:20:15,771 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:logDecorator.py:25
=================================================================================
测试标题: 测试接口
请求方式: POST
请求头: {'Content-Type': 'application/json;charset=UTF-8'}
请求路径: https://redisdatarecall.csdn.net/recommend/get_head_word
请求内容: {'requestType': 'params', 'bid': 'blog-121903028'}
接口响应内容: {'status': 200, 'msg': '查询成功', 'content': ['pytest', 'gitee', 'yaml', 'api', 'jenkins', 'sdn'], 'error': False}
数据库断言数据: {'sql': None}
函数名称: _DoRequest
=================================================================================
%(levelname)-8s2022-01-05 16:20:15,773 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:assertControl.py:67 断言成功, 预期值:200, 断言类型==, 实际值200
%(levelname)-8s2022-01-05 16:20:15,785 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:conftest.py:92 执行用例总数: 1
%(levelname)-8s2022-01-05 16:20:15,785 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:conftest.py:93 执行通过用例数:1
%(levelname)-8s2022-01-05 16:20:15,786 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:conftest.py:97 执行异常用例数:0
%(levelname)-8s2022-01-05 16:20:15,786 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:conftest.py:99 执行跳过用例数:0
%(levelname)-8s2022-01-05 16:20:15,787 C:\Users\hzxy\PycharmProjects\py_auto_demo\logs/info.log:conftest.py:101 执行成功率: 成功率100.00%

View File

@ -1,8 +0,0 @@
{
"code": {
"jsonpath": "$.status",
"type": "==",
"value": 200,
"AssertType": null
}
}

View File

@ -1,4 +0,0 @@
{
"requestType": "params",
"bid": "blog-121903028"
}

View File

@ -1,12 +0,0 @@
INFO C:\Users\hzxy\PycharmProjects\py_auto_demo\logs\info.log:logDecorator.py:25
=================================================================================
测试标题: 测试接口
请求方式: POST
请求头: {'Content-Type': 'application/json;charset=UTF-8'}
请求路径: https://redisdatarecall.csdn.net/recommend/get_head_word
请求内容: {'requestType': 'params', 'bid': 'blog-121903028'}
接口响应内容: {'status': 200, 'msg': '查询成功', 'content': ['pytest', 'gitee', 'yaml', 'api', 'jenkins', 'sdn'], 'error': False}
数据库断言数据: {'sql': None}
函数名称: _DoRequest
=================================================================================
INFO C:\Users\hzxy\PycharmProjects\py_auto_demo\logs\info.log:assertControl.py:67 断言成功, 预期值:200, 断言类型==, 实际值200

View File

@ -1 +0,0 @@
{"uuid": "a1866f8f-4a99-4dca-b068-cc903e6cb33a", "children": ["d84cbb19-8d9e-49dc-8e3a-359b8a89a0df"], "befores": [{"name": "clear_report", "status": "passed", "start": 1641364883649, "stop": 1641364883651}], "afters": [{"name": "clear_report::0", "status": "passed", "start": 1641364883813, "stop": 1641364883813}], "start": 1641364883649, "stop": 1641364883813}

View File

@ -1,13 +0,0 @@
{
"status": 200,
"msg": "查询成功",
"content": [
"pytest",
"gitee",
"yaml",
"api",
"jenkins",
"sdn"
],
"error": false
}

View File

@ -1,3 +0,0 @@
{
"Content-Type": "application/json;charset=UTF-8"
}

View File

@ -1 +0,0 @@
{"uuid": "86ea7d00-99ad-480a-bf5e-838921fbe614", "children": ["d84cbb19-8d9e-49dc-8e3a-359b8a89a0df"], "befores": [{"name": "_session_faker", "status": "passed", "start": 1641364883583, "stop": 1641364883649}], "start": 1641364883583, "stop": 1641364883814}

View File

@ -1 +0,0 @@
{"name": "测试接口", "status": "passed", "description": "\n 测试\n :param :\n :return:\n ", "steps": [{"name": "请求URL: https://redisdatarecall.csdn.net/recommend/get_head_word", "status": "passed", "start": 1641364883804, "stop": 1641364883804}, {"name": "请求方式: POST", "status": "passed", "start": 1641364883804, "stop": 1641364883804}, {"name": "请求头: ", "status": "passed", "attachments": [{"name": "请求头: ", "source": "a6992401-f4a4-4bed-a47f-99a2d05bb31d-attachment.json", "type": "application/json"}], "start": 1641364883804, "stop": 1641364883805}, {"name": "请求数据: ", "status": "passed", "attachments": [{"name": "请求数据: ", "source": "19d2118d-eb6d-45b9-a4cd-3d61dfc59101-attachment.json", "type": "application/json"}], "start": 1641364883805, "stop": 1641364883806}, {"name": "预期数据: ", "status": "passed", "attachments": [{"name": "预期数据: ", "source": "1315df09-7668-46d3-9204-ebb7170e7352-attachment.json", "type": "application/json"}], "start": 1641364883806, "stop": 1641364883806}, {"name": "响应结果: ", "status": "passed", "attachments": [{"name": "响应结果: ", "source": "934fdad3-a23b-4d27-bfc0-3d8b9fe2f82b-attachment.json", "type": "application/json"}], "start": 1641364883807, "stop": 1641364883807}, {"name": "响应耗时(s): 0.146848", "status": "passed", "start": 1641364883807, "stop": 1641364883807}], "attachments": [{"name": "log", "source": "5971f4c5-5177-46f8-b164-a216d86c3c2d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "inData", "value": "{'url': 'https://redisdatarecall.csdn.net/recommend/get_head_word', 'method': 'POST', 'detail': '测试接口', 'headers': {'Content-Type': 'application/json;charset=UTF-8'}, 'data': {'requestType': 'params', 'bid': 'blog-121903028'}, 'resp': {'code': {'jsonpath': '$.status', 'type': '==', 'value': 200, 'AssertType': None}}, 'sql': None}"}], "start": 1641364883652, "stop": 1641364883812, "uuid": "d84cbb19-8d9e-49dc-8e3a-359b8a89a0df", "historyId": "cf046faa21073990d2fce36a28f15f21", "testCaseId": "e70babf13dba7acb8e74d703c3ea391c", "fullName": "test_case.TestMerchant.TestLogin.test_case_demo.TestShopList#testDemo", "labels": [{"name": "story", "value": "这是一个测试的demo接口"}, {"name": "epic", "value": "测试平台端"}, {"name": "feature", "value": "测试模块"}, {"name": "parentSuite", "value": "test_case.TestMerchant.TestLogin"}, {"name": "suite", "value": "test_case_demo"}, {"name": "subSuite", "value": "TestShopList"}, {"name": "host", "value": "LAPTOP-8FNP3JVN"}, {"name": "thread", "value": "11068-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.TestMerchant.TestLogin.test_case_demo"}]}

View File

@ -1 +0,0 @@
{"uuid": "208d7ac7-9271-4ac7-970d-e2dafe45dbca", "befores": [{"name": "inData", "status": "passed", "start": 1641364883651, "stop": 1641364883651}], "start": 1641364883651, "stop": 1641364883812}

View File

@ -13,6 +13,7 @@ from tools.localIpControl import get_host_ip
from tools.yamlControl import GetYamlData
_PROJECT_NAME = GetYamlData(ConfigHandler.config_path).get_yaml_data()['ProjectName'][0]
_TEST_NAME = GetYamlData(ConfigHandler.config_path).get_yaml_data()['TestName']
@pytest.fixture(scope="session", autouse=True)
@ -32,8 +33,8 @@ def clear_report():
def sendDingNotification(totalNum: int, passNum: int, failNum: int,
errorNum: int, skipNum: int, passRate):
# 发送钉钉通知
text = f"#### 婚奢汇自动化通知 \n\n>Python脚本任务: {_PROJECT_NAME}\n\n>环境: TEST\n\n>" \
f"执行人: 余少琪\n\n>执行结果: {passRate} \n\n>总用例数: {totalNum} \n\n>成功用例数: {passNum}" \
text = f"#### {_PROJECT_NAME}自动化通知 \n\n>Python脚本任务: {_PROJECT_NAME}\n\n>环境: TEST\n\n>" \
f"执行人: {_TEST_NAME}\n\n>执行结果: {passRate} \n\n>总用例数: {totalNum} \n\n>成功用例数: {passNum}" \
f" \n\n>失败用例数: {failNum} \n\n>异常用例数: {errorNum} \n\n>跳过用例数: {skipNum}" \
f" ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n" \
f" > ###### 测试报告 [详情](http://{get_host_ip()}:9999/index.html) \n"
@ -49,19 +50,19 @@ def sendEmailNotification(passNum: int, failNum: int,
# 发送企业微信通知
text = """{0}自动化通知】
>测试环境<font color=\"info\">TEST</font>
>测试负责人@余少琪
f>测试负责人@{1}
>
> **执行结果**
><font color=\"info\">{1}</font>
>成功用例数<font color=\"info\">{2}</font>
>失败用例数`{3}`
>异常用例数`{4}`
>跳过用例数<font color=\"warning\">{5}个</font>
> <font color=\"comment\">{6}</font>
><font color=\"info\">{2}</font>
>成功用例数<font color=\"info\">{3}</font>
>失败用例数`{4}`
>异常用例数`{5}`
>跳过用例数<font color=\"warning\">{6}个</font>
> <font color=\"comment\">{7}</font>
>
>非相关负责人员可忽略此消息
>测试报告点击查看>>[测试报告入口](http://121.43.35.47/:9999/index.html)""" \
.format(_PROJECT_NAME, passRate, passNum, failNum, errorNum, skipNum, NowTime())
.format(_PROJECT_NAME, _TEST_NAME, passRate, passNum, failNum, errorNum, skipNum, NowTime())
WeChatSend().sendMarkdownMsg(text)

View File

@ -68,12 +68,12 @@ class TestCaseAutomaticGeneration:
:param caseDetail: 函数描述读取用例中的描述内容做为函数描述
:return:
"""
Author = GetYamlData(ConfigHandler.config_path).get_yaml_data()['TestName']
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
page = f'''#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : {now}
# @Author : 余少琪
# @Author : {Author}
from tools.requestControl import RequestControl