Skip to content

Commit b1ace56

Browse files
authored
修复上报的时区为utcnow (#72)
1 parent f0825d7 commit b1ace56

7 files changed

Lines changed: 36 additions & 18 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.24"
3+
version = "0.1.25"
44
description = "Pytest tool for TestSolar"
55
authors = [
66
{name = "asiazhang2002", email = "asiazhang2002@gmail.com"},

‎pytest/src/testsolar_pytestx/case_log.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def gen_logs(report: TestReport) -> TestCaseLog:
2626
log += error_log
2727

2828
return TestCaseLog(
29-
Time=datetime.now() - timedelta(report.duration),
29+
Time=datetime.utcnow() - timedelta(report.duration),
3030
Level=LogLevel.ERROR if report.failed else LogLevel.INFO,
3131
Content=log,
3232
)

‎pytest/src/testsolar_pytestx/executor.py‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def pytest_runtest_logstart(self, nodeid: str, location: Any) -> None:
133133
test_result = TestResult(
134134
Test=TestCase(Name=testcase_name),
135135
ResultType=ResultType.RUNNING,
136-
StartTime=datetime.now(),
136+
StartTime=datetime.utcnow(),
137137
Message="",
138138
)
139139

@@ -163,7 +163,7 @@ def pytest_runtest_logreport(self, report: TestReport) -> None:
163163
testcase_name = normalize_testcase_name(report.nodeid, self.data_drive_key)
164164
test_result = self.testdata[testcase_name]
165165

166-
step_end_time = datetime.now()
166+
step_end_time = datetime.utcnow()
167167

168168
result_type: ResultType
169169
if report.failed:
@@ -178,7 +178,7 @@ def pytest_runtest_logreport(self, report: TestReport) -> None:
178178
TestCaseStep(
179179
Title="Setup",
180180
Logs=[gen_logs(report)],
181-
StartTime=step_end_time - timedelta(report.duration),
181+
StartTime=step_end_time - timedelta(seconds=report.duration),
182182
EndTime=step_end_time,
183183
ResultType=result_type,
184184
)
@@ -198,7 +198,7 @@ def pytest_runtest_logreport(self, report: TestReport) -> None:
198198
TestCaseStep(
199199
Title="Run TestCase",
200200
Logs=[gen_logs(report)],
201-
StartTime=step_end_time - timedelta(report.duration),
201+
StartTime=step_end_time - timedelta(seconds=report.duration),
202202
EndTime=step_end_time,
203203
ResultType=result_type,
204204
)
@@ -237,7 +237,7 @@ def pytest_runtest_logfinish(self, nodeid: str, location: Any) -> None:
237237
testcase_name = normalize_testcase_name(nodeid, self.data_drive_key)
238238

239239
test_result = self.testdata[testcase_name]
240-
test_result.EndTime = datetime.now()
240+
test_result.EndTime = datetime.utcnow()
241241

242242
# 检查是否allure报告,如果是在统一生成json文件后再上报
243243
enable_allure = check_allure_enable()

‎pytest/src/testsolar_pytestx/ini_fixer.py‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,14 @@ def remove_conflict(ini_file: Path, backup_file: Path) -> bool:
4242
config = configparser.ConfigParser()
4343
config.read(ini_file)
4444

45-
if "pytest" in config and "addopts" in config["pytest"]:
46-
logger.info("removing addopts in pytest.ini")
47-
del config["pytest"]["addopts"]
45+
if "pytest" in config:
46+
if "addopts" in config["pytest"]:
47+
logger.info("removing addopts in pytest.ini")
48+
del config["pytest"]["addopts"]
49+
# 如果用户重设置了错误的testpaths,也需要去除
50+
if "testpaths" in config["pytest"]:
51+
logger.info("removing testpaths in pytest.ini")
52+
del config["pytest"]["testpaths"]
4853

4954
shutil.copyfile(str(ini_file), str(backup_file))
5055

‎pytest/tests/test_executor.py‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import io
22
import unittest
3+
from datetime import datetime, timedelta
34
from pathlib import Path
45

56
from testsolar_testtool_sdk.model.param import EntryParam
@@ -9,6 +10,11 @@
910
from testsolar_pytestx.executor import run_testcases
1011

1112

13+
def convert_to_datetime(raw: str) -> datetime:
14+
dt = datetime.strptime(raw, "%Y-%m-%dT%H:%M:%S.%fZ")
15+
return dt
16+
17+
1218
class ExecutorTest(unittest.TestCase):
1319
testdata_dir = Path(__file__).parent.parent.absolute().joinpath("testdata")
1420

@@ -22,6 +28,8 @@ def test_run_success_testcase_with_logs(self):
2228
FileReportPath="",
2329
)
2430

31+
current_time = datetime.utcnow()
32+
2533
pipe_io = io.BytesIO()
2634
run_testcases(entry, pipe_io)
2735
pipe_io.seek(0)
@@ -33,8 +41,16 @@ def test_run_success_testcase_with_logs(self):
3341
self.assertEqual(end.Test.Name, "test_normal_case.py?test_success")
3442
self.assertEqual(end.Test.Attributes["tag"], "high")
3543
self.assertEqual(end.Test.Attributes["owner"], "foo")
44+
elapse: timedelta = convert_to_datetime(str(end.StartTime)) - current_time
45+
self.assertLess(elapse.total_seconds(), 1)
46+
elapse_end: timedelta = convert_to_datetime(str(end.EndTime)) - current_time
47+
self.assertLess(elapse_end.total_seconds(), 1)
3648
self.assertEqual(end.ResultType, ResultType.SUCCEED)
3749
self.assertEqual(len(end.Steps), 3)
50+
elapse = current_time - convert_to_datetime(str(end.Steps[0].StartTime))
51+
self.assertLess(elapse.total_seconds(), 1)
52+
elapse = current_time - convert_to_datetime(str(end.Steps[0].EndTime))
53+
self.assertLess(elapse.total_seconds(), 1)
3854

3955
step1 = end.Steps[0]
4056
self.assertEqual(step1.Title, "Setup")

‎pytest/tests/test_run_allure.py‎

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import io
22
import os
3-
import pytest
3+
from datetime import datetime
44
from pathlib import Path
55
from unittest import TestCase
66
from unittest.mock import patch, mock_open
7-
from datetime import datetime
87

9-
from testsolar_testtool_sdk.pipe_reader import read_test_result
8+
import pytest
109
from testsolar_testtool_sdk.model.test import TestCase as TestSolar_TestCase
1110
from testsolar_testtool_sdk.model.testresult import (
1211
TestResult,
13-
ResultType,
1412
)
13+
from testsolar_testtool_sdk.pipe_reader import read_test_result
1514

15+
from run import run_testcases_from_args
1616
from testsolar_pytestx.extend.allure_extend import (
1717
generate_allure_results,
1818
gen_allure_step_info,
@@ -21,9 +21,6 @@
2121
Step,
2222
)
2323

24-
from run import run_testcases_from_args
25-
26-
2724
allure_json = """
2825
{
2926
"name": "test_case_1",

‎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.24'
5+
version: '0.1.25'
66
langType: INTERPRETED
77
description: |-
88
pytest是一个成熟的全功能Python测试工具,可以帮助您编写更好的程序。此测试工具允许您在TestSolar上运行pytest。

0 commit comments

Comments
 (0)