Skip to content

Commit 43fbfcb

Browse files
committed
移除url编码逻辑
1 parent 3fa54a4 commit 43fbfcb

11 files changed

Lines changed: 41 additions & 66 deletions

File tree

‎pytest/pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "testsolar-pytestx"
3-
version = "0.1.52"
3+
version = "0.1.53"
44
description = "Pytest tool for TestSolar"
55
authors = [
66
{name = "asiazhang2002", email = "asiazhang2002@gmail.com"},

‎pytest/src/testsolar_pytestx/converter.py‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import re
22
import os
33
from typing import Tuple, Optional
4-
from urllib.parse import quote
54
from pytest import Item
65
from loguru import logger
76

@@ -79,14 +78,14 @@ def pytest_to_selector(item: Item, project_path: str) -> str:
7978
if item.cls:
8079
name = item.cls.__name__ + "/" + name
8180
name = decode_datadrive(name)
82-
full_name = f"{rel_path}?{quote(name)}"
81+
full_name = f"{rel_path}?{name}"
8382
elif hasattr(item, "nodeid") and item.nodeid:
8483
full_name = normalize_testcase_name(item.nodeid)
8584
else:
8685
rel_path, _, name = item.location
8786
name = name.replace(".", "/")
8887
name = decode_datadrive(name)
89-
full_name = f"{rel_path}?{quote(name)}"
88+
full_name = f"{rel_path}?{name}"
9089

9190
return full_name
9291

@@ -146,5 +145,5 @@ def normalize_testcase_name(name: str, sub_case_key: Optional[str] = None) -> st
146145
if "?" in name:
147146
path = name.split("?", 1)[0]
148147
case_name = name.split("?", 1)[-1]
149-
return "?".join([path, quote(case_name)])
148+
return "?".join([path, case_name])
150149
return name

‎pytest/src/testsolar_pytestx/executor.py‎

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing import BinaryIO, Optional, Dict, Any, List, Callable
55

66
from loguru import logger
7-
from pytest import CallInfo, Item, Session
7+
from pytest import Item, Session
88

99
try:
1010
from pytest import TestReport
@@ -17,8 +17,6 @@
1717
TestResult,
1818
ResultType,
1919
TestCaseStep,
20-
TestCaseLog,
21-
LogLevel,
2220
)
2321
from testsolar_testtool_sdk.reporter import Reporter
2422
from enum import Enum
@@ -104,29 +102,6 @@ def _get_result_type_by_report(self, report: TestReport) -> ResultType:
104102
result_type = ResultType.FAILED
105103
return result_type
106104

107-
def pytest_runtest_makereport(self, item: Item, call: CallInfo[Any]) -> None:
108-
if call.excinfo is not None:
109-
logger.info(f"S {item.nodeid} log exec info")
110-
testcase_name = normalize_testcase_name(item.nodeid, self.data_drive_key)
111-
test_result = self.testdata[testcase_name]
112-
test_result.Steps.append(
113-
TestCaseStep(
114-
Title="exec failed",
115-
Logs=[
116-
TestCaseLog(
117-
Time=datetime.utcnow(),
118-
Level=LogLevel.ERROR,
119-
Content=f"{call.excinfo.typename}: {call.excinfo.value}",
120-
)
121-
],
122-
StartTime=datetime.utcnow(),
123-
EndTime=datetime.utcnow(),
124-
ResultType=ResultType.FAILED,
125-
)
126-
)
127-
test_result.ResultType = ResultType.FAILED
128-
logger.info(f"E {item.nodeid} log exec info")
129-
130105
def pytest_runtest_logreport(self, report: TestReport) -> None:
131106
"""
132107
Process the TestReport produced for each of the setup, call and teardown runtest phases of an item.

‎pytest/src/testsolar_pytestx/parser.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def parse_case_attributes(item: Item, comment_fields: Optional[List[str]] = None
4141
extra_attr[key] = mark.args[0][key]
4242
attr_list.append(extra_attr)
4343
attributes["extra_attributes"] = json.dumps(attr_list)
44-
attributes["tags"] = json.dumps(tags)
44+
attributes["tags"] = json.dumps(tags)
4545
return attributes
4646

4747

‎pytest/tests/test_collector.py‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ def test_collect_testcases_when_selector_is_valid(self):
3838
re.Tests.sort(key=lambda x: x.Name)
3939
re.LoadErrors.sort(key=lambda x: x.name)
4040
self.assertEqual(re.Tests[0].Name, "aa/bb/cc/test_in_sub_class.py?TestCompute/test_add")
41-
self.assertEqual(re.Tests[1].Name, "test_data_drive.py?test_eval/%5B2%2B4-6%5D")
42-
self.assertEqual(re.Tests[2].Name, "test_data_drive.py?test_eval/%5B3%2B5-8%5D")
43-
self.assertEqual(re.Tests[3].Name, "test_data_drive.py?test_eval/%5B6%2A9-42%5D")
41+
self.assertEqual(re.Tests[1].Name, "test_data_drive.py?test_eval/[2+4-6]")
42+
self.assertEqual(re.Tests[2].Name, "test_data_drive.py?test_eval/[3+5-8]")
43+
self.assertEqual(re.Tests[3].Name, "test_data_drive.py?test_eval/[6*9-42]")
4444
self.assertEqual(
4545
re.Tests[4].Name,
46-
"test_data_drive.py?test_special_data_drive_name/%5B%E4%B8%AD%E6%96%87-%E5%88%86%E5%8F%B7%2B%5Bid%3A32%5D%5D",
46+
"test_data_drive.py?test_special_data_drive_name/[中文-分号+[id:32]]",
4747
)
4848

4949
self.assertEqual(re.Tests[5].Name, "test_normal_case.py?test_success")
@@ -107,15 +107,15 @@ def test_collect_testcases_with_utf8_chars(self):
107107

108108
self.assertEqual(
109109
re.Tests[0].Name,
110-
"test_data_drive_zh_cn.py?test_include/%5B%23%3F-%23%3F%5E%24%25%21/%5D",
110+
"test_data_drive_zh_cn.py?test_include/[#?-#?^$%!/]",
111111
)
112112
self.assertEqual(
113113
re.Tests[1].Name,
114-
"test_data_drive_zh_cn.py?test_include/%5B%E4%B8%AD%E6%96%87-%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97%5D",
114+
"test_data_drive_zh_cn.py?test_include/[中文-中文汉字]",
115115
)
116116
self.assertEqual(
117117
re.Tests[2].Name,
118-
"test_data_drive_zh_cn.py?test_include/%5B%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%5D",
118+
"test_data_drive_zh_cn.py?test_include/[파일을 찾을 수 없습니다-ファイルが見つかりません]",
119119
)
120120

121121
def test_collect_testcases_with_case_drive_separator(self):
@@ -222,5 +222,5 @@ def test_collect_testcases_with_emoji(self):
222222
self.assertEqual(len(re.LoadErrors), 0)
223223
self.assertEqual(
224224
re.Tests[0].Name,
225-
"test_emoji_data_drive.py?test_emoji_data_drive_name/%5B%F0%9F%98%84%5D",
225+
"test_emoji_data_drive.py?test_emoji_data_drive_name/[😄]",
226226
)

‎pytest/tests/test_converter.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def test_pytest_path_cls_to_selector(self):
7070

7171
re = pytest_to_selector(mock, "/data/tests/")
7272

73-
self.assertEqual(re, "tests/test_data_drive_zh_cn.py?InnerClass/test_include/%5B2-8%5D")
73+
self.assertEqual(re, "tests/test_data_drive_zh_cn.py?InnerClass/test_include/[2-8]")
7474

7575
def test_pytest_node_id_to_selector_without_datadrive(self):
7676
mock = MagicMock()
@@ -92,7 +92,7 @@ def test_pytest_node_id_to_selector_with_datadrive(self):
9292

9393
self.assertEqual(
9494
re,
95-
"/data/tests/tests/test_data_drive_zh_cn.py?test_include/%5B%23%3F-/%5B%E4%B8%AD%E6%96%87%3A203%5D%5D",
95+
"/data/tests/tests/test_data_drive_zh_cn.py?test_include/[#?-/[中文:203]]",
9696
)
9797

9898
def test_pytest_location_to_selector(self):
@@ -104,7 +104,7 @@ def test_pytest_location_to_selector(self):
104104

105105
re = pytest_to_selector(mock, "/data/tests/")
106106

107-
self.assertEqual(re, "tests/test_data_drive_zh_cn.py?test_include/%5BAA-BB%5D")
107+
self.assertEqual(re, "tests/test_data_drive_zh_cn.py?test_include/[AA-BB]")
108108

109109

110110
class TestExtractCaseAndDataDrive:

‎pytest/tests/test_executor.py‎

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,14 @@ def test_run_failed_testcase_with_log(self):
143143

144144
end = read_test_result(pipe_io)
145145
self.assertEqual(end.ResultType, ResultType.FAILED)
146-
self.assertEqual(len(end.Steps), 4)
146+
self.assertEqual(len(end.Steps), 3)
147147
self.assertIn("testdata/test_normal_case.py", end.Message)
148148

149-
step3 = end.Steps[2]
150-
self.assertEqual(len(step3.Logs), 1)
151-
self.assertEqual(step3.Logs[0].Level, LogLevel.ERROR)
152-
self.assertEqual(step3.ResultType, ResultType.FAILED)
153-
self.assertIn("E assert 4 == 6", step3.Logs[0].Content)
149+
step2 = end.Steps[1]
150+
self.assertEqual(len(step2.Logs), 1)
151+
self.assertEqual(step2.Logs[0].Level, LogLevel.ERROR)
152+
self.assertEqual(step2.ResultType, ResultType.FAILED)
153+
self.assertIn("E assert 4 == 6", step2.Logs[0].Content)
154154

155155
def test_run_failed_testcase_with_raise_error(self):
156156
entry = EntryParam(
@@ -171,13 +171,13 @@ def test_run_failed_testcase_with_raise_error(self):
171171

172172
end = read_test_result(pipe_io)
173173
self.assertEqual(end.ResultType, ResultType.FAILED)
174-
self.assertEqual(len(end.Steps), 4)
174+
self.assertEqual(len(end.Steps), 3)
175175

176-
step3 = end.Steps[2]
177-
self.assertEqual(len(step3.Logs), 1)
178-
self.assertEqual(step3.Logs[0].Level, LogLevel.ERROR)
179-
self.assertEqual(step3.ResultType, ResultType.FAILED)
180-
self.assertIn("E RuntimeError: this is raise runtime error", step3.Logs[0].Content)
176+
step2 = end.Steps[1]
177+
self.assertEqual(len(step2.Logs), 1)
178+
self.assertEqual(step2.Logs[0].Level, LogLevel.ERROR)
179+
self.assertEqual(step2.ResultType, ResultType.FAILED)
180+
self.assertIn("E RuntimeError: this is raise runtime error", step2.Logs[0].Content)
181181

182182
def test_run_skipped_testcase(self):
183183
entry = EntryParam(
@@ -198,7 +198,7 @@ def test_run_skipped_testcase(self):
198198

199199
end = read_test_result(pipe_io)
200200
self.assertEqual(end.ResultType, ResultType.IGNORED)
201-
self.assertEqual(len(end.Steps), 3)
201+
self.assertEqual(len(end.Steps), 2)
202202
self.assertEqual(end.Message, "Skipped: no way of currently testing this")
203203

204204
def test_run_datadrive_with_single_value(self):
@@ -296,6 +296,6 @@ def test_run_testcase_with_emoji_data_drive(self):
296296
start = read_test_result(pipe_io)
297297
self.assertEqual(
298298
start.Test.Name,
299-
"test_emoji_data_drive.py?test_emoji_data_drive_name/%5B%F0%9F%98%84%5D",
299+
"test_emoji_data_drive.py?test_emoji_data_drive_name/[😄]",
300300
)
301301
self.assertEqual(start.ResultType, ResultType.RUNNING)

‎pytest/tests/test_load.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def test_collect_testcases_from_args(self):
2525
self.assertEqual(len(re.Tests), 7)
2626
self.assertEqual(
2727
re.Tests[4].Name,
28-
"test_data_drive.py?test_special_data_drive_name/%5B%E4%B8%AD%E6%96%87-%E5%88%86%E5%8F%B7%2B%5Bid%3A32%5D%5D",
28+
"test_data_drive.py?test_special_data_drive_name/[中文-分号+[id:32]]",
2929
)
3030
self.assertEqual(
3131
re.Tests[6].Name,

‎pytest/tests/test_run_allure.py‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
)
1212
from testsolar_testtool_sdk.pipe_reader import read_test_result
1313

14-
from run import run_testcases_from_args
15-
from testsolar_pytestx.extend.allure_extend import (
14+
from src.run import run_testcases_from_args
15+
from src.testsolar_pytestx.extend.allure_extend import (
1616
generate_allure_results,
1717
gen_allure_step_info,
1818
format_allure_time,
@@ -112,12 +112,12 @@ def test_run_testcases_from_args(self):
112112
pipe_io.seek(0)
113113
start = read_test_result(pipe_io)
114114
self.assertEqual(start.ResultType, ResultType.RUNNING)
115-
self.assertEqual(start.Test.Name, "allure/allure_step_test.py?test_step/%5Bdata0%5D")
115+
self.assertEqual(start.Test.Name, "allure/allure_step_test.py?test_step/[data0]")
116116

117117
# testcase finish
118118
stop = read_test_result(pipe_io)
119119
self.assertEqual(stop.ResultType, ResultType.SUCCEED)
120-
self.assertEqual(stop.Test.Name, "allure/allure_step_test.py?test_step/%5Bdata0%5D")
120+
self.assertEqual(stop.Test.Name, "allure/allure_step_test.py?test_step/[data0]")
121121
self.assertEqual(stop.Message, "")
122122
self.assertEqual(type(stop.Steps), list)
123-
self.assertEqual(len(stop.Steps), 3)
123+
self.assertEqual(len(stop.Steps), 6)

‎pytest/testtool.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ schemaVersion: 1.0
22
name: pytest
33
nameZh: pytest自动化测试
44
lang: python
5-
version: '0.1.52'
5+
version: '0.1.53'
66
langType: INTERPRETED
77
description: |-
88
pytest是一个成熟的全功能Python测试工具,可以帮助您编写更好的程序。此测试工具允许您在TestSolar上运行pytest。

0 commit comments

Comments
 (0)