feat: 修改ui用例的报告路径
This commit is contained in:
@@ -1,14 +1,60 @@
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def main() -> int:
|
||||
tests_dir = Path(__file__).resolve().parent
|
||||
project_root = tests_dir.parent
|
||||
CURRENT_FILE_PATH = Path(__file__).resolve()
|
||||
PROJECT_ROOT = CURRENT_FILE_PATH.parent.parent
|
||||
ALLURE_RESULTS_DIR = PROJECT_ROOT / "allure-results"
|
||||
ALLURE_REPORT_DIR = PROJECT_ROOT / "allure-report"
|
||||
LOCAL_ALLURE_PATH = PROJECT_ROOT / "allure" / "allure-2.28.0" / "bin" / "allure.bat"
|
||||
|
||||
command = [sys.executable, "-m", "pytest", str(tests_dir), *sys.argv[1:]]
|
||||
completed = subprocess.run(command, cwd=project_root)
|
||||
|
||||
def _has_alluredir_arg(args: list[str]) -> bool:
|
||||
return any(arg == "--alluredir" or arg.startswith("--alluredir=") for arg in args)
|
||||
|
||||
|
||||
def _allure_command() -> str | None:
|
||||
env_allure_path = os.environ.get("ALLURE_PATH")
|
||||
if env_allure_path:
|
||||
return env_allure_path
|
||||
|
||||
if LOCAL_ALLURE_PATH.exists():
|
||||
return str(LOCAL_ALLURE_PATH)
|
||||
|
||||
return shutil.which("allure")
|
||||
|
||||
|
||||
def _generate_allure_report() -> None:
|
||||
allure = _allure_command()
|
||||
if not allure:
|
||||
print("未找到 allure 命令,跳过 HTML 报告生成。")
|
||||
return
|
||||
|
||||
command = [
|
||||
allure,
|
||||
"generate",
|
||||
str(ALLURE_RESULTS_DIR),
|
||||
"-o",
|
||||
str(ALLURE_REPORT_DIR),
|
||||
"--clean",
|
||||
]
|
||||
subprocess.run(command, cwd=PROJECT_ROOT, check=False)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
tests_dir = CURRENT_FILE_PATH.parent
|
||||
pytest_args = sys.argv[1:]
|
||||
|
||||
command = [sys.executable, "-m", "pytest", str(tests_dir)]
|
||||
if not _has_alluredir_arg(pytest_args):
|
||||
command.append(f"--alluredir={ALLURE_RESULTS_DIR}")
|
||||
command.extend(pytest_args)
|
||||
|
||||
completed = subprocess.run(command, cwd=PROJECT_ROOT)
|
||||
_generate_allure_report()
|
||||
return completed.returncode
|
||||
|
||||
|
||||
|
||||
4773
Log/run.log
4773
Log/run.log
File diff suppressed because one or more lines are too long
@@ -1,97 +0,0 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
"""
|
||||
Author: qiaoxinjiu
|
||||
Email: qiaoxinjiu@sparkedu.com
|
||||
Create Date: 2026/01/22 5:58 下午
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
# 添加项目根目录到 Python 路径,以便导入 base_framework 模块
|
||||
current_file_path = os.path.abspath(__file__)
|
||||
project_root = os.path.abspath(os.path.join(os.path.dirname(current_file_path), '../../../../'))
|
||||
if project_root not in sys.path:
|
||||
sys.path.insert(0, project_root)
|
||||
|
||||
from base_framework.public_tools import log
|
||||
from base_framework.public_tools.my_faker import MyFaker
|
||||
from base_framework.public_tools.runner import Runner
|
||||
from base_framework.public_tools.pgsqlhelper import PgSqlHelper
|
||||
from base_framework.public_tools import read_config
|
||||
from base_framework.public_tools import utils
|
||||
from base_framework.public_tools import mg_keyword
|
||||
from zhyy.library.ZZYY_interface import ZhyyInterface
|
||||
|
||||
obj_get_log = log.get_logger()
|
||||
obj_my_faker = MyFaker()
|
||||
obj_runner = Runner()
|
||||
obj_pgsql_helper = PgSqlHelper()
|
||||
obj_get_way = utils.Tools()
|
||||
obj_mg_keyword = mg_keyword.ManageKeyWord()
|
||||
|
||||
|
||||
class PurchaseOrder(ZhyyInterface):
|
||||
def __init__(self):
|
||||
'''
|
||||
这个是针对于读取配置文件的初始化函数,用于读取默认参数
|
||||
'''
|
||||
super().__init__()
|
||||
self.config_index_path = os.path.dirname(os.path.abspath(__file__))
|
||||
self.config_index_filePath = os.path.join(self.config_index_path, "purchase.ini")
|
||||
self.config_index_content = read_config.ReadConfig(filename=self.config_index_filePath)
|
||||
|
||||
def kw_zhyy_get_purchase_page_post(self, note, user, **kwargs):
|
||||
"""
|
||||
| 功能说明: | 返回采购工作台采购单列表数据 |
|
||||
| 输入参数: | note | 注释 |
|
||||
|user | 用户信息,传入 'purchase' 默认读取配置文件里面 'purchase' 对应的默认账号信息|
|
||||
|supplier_company_ids | 供应商id | 非必填
|
||||
|payment_status | 付款状态 | 非必填
|
||||
|status | 采购单状态 | 非必填
|
||||
|order_sn | 采购单号 | 非必填
|
||||
|page_no | 页码 | 必填
|
||||
|page_size | 每页条数 | 必填
|
||||
| 返回参数: | {"success":true,"message":"success","code":200,"data":
|
||||
{'todoTask':['PO260116003','PO260115010'],'inProcessTask':['PO260116003','PO260115010']}} | |
|
||||
| 作者信息: | 谯新久 | 修改时间 | 2022-8-20 |
|
||||
"""
|
||||
logging.info("==========={0}===========".format(note))
|
||||
# 获取所有参数
|
||||
supplier_company_ids = kwargs.get("supplier_company_ids")
|
||||
payment_status = kwargs.get("payment_status")
|
||||
status = kwargs.get("status")
|
||||
order_sn = kwargs.get("order_sn")
|
||||
page_no = kwargs.get("page_no")
|
||||
page_size = kwargs.get("page_size")
|
||||
|
||||
# 检查必填参数
|
||||
if not page_no or not page_size:
|
||||
raise Exception("页码和每页条数不能为空")
|
||||
|
||||
# 组装参数字典,只包含非空字段,参数名使用 pageNo 和 pageSize
|
||||
request_params = {
|
||||
"pageNo": page_no,
|
||||
"pageSize": page_size
|
||||
}
|
||||
|
||||
# 如果字段不为空,才添加到参数字典中
|
||||
if supplier_company_ids is not None and supplier_company_ids != "":
|
||||
request_params["supplier_company_ids"] = supplier_company_ids
|
||||
if payment_status is not None and payment_status != "":
|
||||
request_params["payment_status"] = payment_status
|
||||
if status is not None and status != "":
|
||||
request_params["status"] = status
|
||||
if order_sn is not None and order_sn != "":
|
||||
request_params["order_sn"] = order_sn
|
||||
|
||||
# 使用 ** 方式解包字典传递参数
|
||||
get_todo_info = self.kw_in_zhyy_purchase_order_page_post(user=user, **request_params)
|
||||
print(get_todo_info if get_todo_info else "查询失败")
|
||||
return get_todo_info
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
test = PurchaseOrder()
|
||||
a = test.kw_zhyy_get_purchase_page_post(user='purchase', note="测试", page_no=1, page_size=10)
|
||||
print(a)
|
||||
@@ -1,88 +0,0 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
"""
|
||||
Author: qiaoxinjiu
|
||||
Email: qiaoxinjiu@sparkedu.com
|
||||
Create Date: 2022/08/20 5:58 下午
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
# 添加项目根目录到 Python 路径,以便导入 base_framework 模块
|
||||
current_file_path = os.path.abspath(__file__)
|
||||
project_root = os.path.abspath(os.path.join(os.path.dirname(current_file_path), '../../../../'))
|
||||
if project_root not in sys.path:
|
||||
sys.path.insert(0, project_root)
|
||||
|
||||
from base_framework.public_tools import log
|
||||
from base_framework.public_tools.my_faker import MyFaker
|
||||
from base_framework.public_tools.runner import Runner
|
||||
from base_framework.public_tools.pgsqlhelper import PgSqlHelper
|
||||
from base_framework.public_tools import read_config
|
||||
from base_framework.public_tools import utils
|
||||
from base_framework.public_tools import mg_keyword
|
||||
from zhyy.library.ZZYY_interface import ZhyyInterface
|
||||
|
||||
obj_get_log = log.get_logger()
|
||||
obj_my_faker = MyFaker()
|
||||
obj_runner = Runner()
|
||||
obj_pgsql_helper = PgSqlHelper()
|
||||
obj_get_way = utils.Tools()
|
||||
obj_mg_keyword = mg_keyword.ManageKeyWord()
|
||||
|
||||
|
||||
class PurchaseIndex(ZhyyInterface):
|
||||
def __init__(self):
|
||||
'''
|
||||
这个是针对于读取配置文件的初始化函数,用于读取默认参数
|
||||
'''
|
||||
super().__init__()
|
||||
self.config_index_path = os.path.dirname(os.path.abspath(__file__))
|
||||
self.config_index_filePath = os.path.join(self.config_index_path, "purchase.ini")
|
||||
self.config_index_content = read_config.ReadConfig(filename=self.config_index_filePath)
|
||||
|
||||
def kw_zhyy_get_todo(self, note, user):
|
||||
"""
|
||||
| 功能说明: | 返回采购工作台首页待办任务的PO与在办任务PO |
|
||||
| 输入参数: | note | 注释 |
|
||||
|user | 用户信息,传入 'purchase' 默认读取配置文件里面 'purchase' 对应的默认账号信息|
|
||||
| 返回参数: | {"success":true,"message":"success","code":200,"data":
|
||||
{'todoTask':['PO260116003','PO260115010'],'inProcessTask':['PO260116003','PO260115010']}} | |
|
||||
| 作者信息: | 谯新久 | 修改时间 | 2022-8-20 |
|
||||
"""
|
||||
logging.info("==========={0}===========".format(note))
|
||||
get_todo_info = self.kw_in_zhyy_purchase_todo_get(user=user)
|
||||
if get_todo_info['code'] != 0:
|
||||
raise Exception("查询采购待办任务失败: {}".format(get_todo_info))
|
||||
get_todo_info["message"] = "查询采购待办任务成功"
|
||||
data = get_todo_info.get("data")
|
||||
if data is None:
|
||||
raise Exception("返回数据为空,data字段不存在")
|
||||
list_get_todo_task = data.get("todoTask") or []
|
||||
list_get_process_task = data.get("inProcessTask") or []
|
||||
list_todo_task_po = []
|
||||
list_process_task_po = []
|
||||
for todoTask in list_get_todo_task:
|
||||
if isinstance(todoTask, dict):
|
||||
list_todo_task_po.append(todoTask.get("businessSn"))
|
||||
for processTask in list_get_process_task:
|
||||
if isinstance(processTask, dict):
|
||||
list_process_task_po.append(processTask.get("businessSn"))
|
||||
get_todo_info["data"]["todoTask"] = list_todo_task_po
|
||||
get_todo_info["data"]["inProcessTask"] = list_process_task_po
|
||||
if list_todo_task_po:
|
||||
test_purchase = list_todo_task_po[0]
|
||||
# 表在public schema中,使用public.erp_purchase_order格式
|
||||
sql = "SELECT * FROM public.erp_purchase_order WHERE order_sn = '{}'".format(test_purchase)
|
||||
try:
|
||||
obj_pgsql_helper.select_one(sql)
|
||||
except Exception as e:
|
||||
# 如果查询失败,记录日志但不影响主流程
|
||||
obj_get_log.warning("查询采购订单表失败,订单号:{},错误:{}".format(test_purchase, str(e)))
|
||||
return get_todo_info
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
test = PurchaseIndex()
|
||||
a = test.kw_zhyy_get_todo(user='purchase',note="测试")
|
||||
print(a)
|
||||
@@ -1,2 +0,0 @@
|
||||
[qa-user]
|
||||
user_info ={"studentId":21797349,"sex":0,"nickName":"auto st test","birthday":1640966400000,"avatar":"https://stalegacy.huohua.cn/image/huohua/avatar/default/default_avatar1.png"}
|
||||
@@ -0,0 +1,230 @@
|
||||
--- Logging error ---
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\logging\__init__.py", line 1154, in emit
|
||||
stream.write(msg + self.terminator)
|
||||
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
||||
OSError: [WinError 6] 句柄无效。
|
||||
Call stack:
|
||||
File "c:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\test_my_order.py", line 132, in <module>
|
||||
raise SystemExit(pytest.main([str(Path(__file__))]))
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 199, in main
|
||||
ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 365, in pytest_cmdline_main
|
||||
return wrap_session(config, _main)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 318, in wrap_session
|
||||
session.exitstatus = doit(config, session) or 0
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 372, in _main
|
||||
config.hook.pytest_runtestloop(session=session)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 396, in pytest_runtestloop
|
||||
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 118, in pytest_runtest_protocol
|
||||
runtestprotocol(item, nextitem=nextitem)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol
|
||||
rep = call_and_report(item, "setup", log)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 244, in call_and_report
|
||||
call = CallInfo.from_call(
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 353, in from_call
|
||||
result: TResult | None = func()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 245, in <lambda>
|
||||
lambda: runtest_hook(item=item, **kwds),
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 165, in pytest_runtest_setup
|
||||
item.session._setupstate.setup(item)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 523, in setup
|
||||
col.setup()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\python.py", line 1723, in setup
|
||||
self._request._fillfixtures()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 707, in _fillfixtures
|
||||
item.funcargs[argname] = self.getfixturevalue(argname)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 539, in getfixturevalue
|
||||
fixturedef = self._get_active_fixturedef(argname)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 627, in _get_active_fixturedef
|
||||
fixturedef.execute(request=subrequest)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 1110, in execute
|
||||
result: FixtureValue = ihook.pytest_fixture_setup(
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 1202, in pytest_fixture_setup
|
||||
result = call_fixture_func(fixturefunc, request, kwargs)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 908, in call_fixture_func
|
||||
fixture_result = next(generator)
|
||||
File "C:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\conftest.py", line 207, in test_run_logger
|
||||
logger.info("用例开始: %s", case_name)
|
||||
Message: '用例开始: %s'
|
||||
Arguments: ('tests/test_my_order.py::test_home_my_order_first_order_detail_after_login[chromium]',)
|
||||
2026-05-13 15:00:58,144 [INFO] tests.test_my_order - 登录用户从首页进入 My Order 并查看第一笔订单详情
|
||||
2026-05-13 15:00:58,145 [INFO] tests.test_my_order - 打开链接地址: https://joyhub-website-frontend-test.best-envision.com/
|
||||
--- Logging error ---
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\logging\__init__.py", line 1154, in emit
|
||||
stream.write(msg + self.terminator)
|
||||
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
||||
OSError: [WinError 6] 句柄无效。
|
||||
Call stack:
|
||||
File "c:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\test_my_order.py", line 132, in <module>
|
||||
raise SystemExit(pytest.main([str(Path(__file__))]))
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 199, in main
|
||||
ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 365, in pytest_cmdline_main
|
||||
return wrap_session(config, _main)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 318, in wrap_session
|
||||
session.exitstatus = doit(config, session) or 0
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 372, in _main
|
||||
config.hook.pytest_runtestloop(session=session)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 396, in pytest_runtestloop
|
||||
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 118, in pytest_runtest_protocol
|
||||
runtestprotocol(item, nextitem=nextitem)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 137, in runtestprotocol
|
||||
reports.append(call_and_report(item, "call", log))
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 244, in call_and_report
|
||||
call = CallInfo.from_call(
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 353, in from_call
|
||||
result: TResult | None = func()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 245, in <lambda>
|
||||
lambda: runtest_hook(item=item, **kwds),
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 179, in pytest_runtest_call
|
||||
item.runtest()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\python.py", line 1720, in runtest
|
||||
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\python.py", line 166, in pytest_pyfunc_call
|
||||
result = testfunction(**testargs)
|
||||
File "C:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\test_my_order.py", line 124, in test_home_my_order_first_order_detail_after_login
|
||||
ensure_logged_in_user()
|
||||
File "C:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\conftest.py", line 114, in _ensure_logged_in_user
|
||||
login_as_configured_user_if_needed(page)
|
||||
File "C:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\conftest.py", line 67, in login_as_configured_user_if_needed
|
||||
logger.info("当前未登录,执行配置用户登录")
|
||||
Message: '当前未登录,执行配置用户登录'
|
||||
Arguments: ()
|
||||
2026-05-13 15:01:01,382 [INFO] tests.test_my_order - 等待登录完成并展示用户菜单入口
|
||||
2026-05-13 15:01:01,413 [INFO] tests.test_my_order - 从首页查找 My Order 入口
|
||||
2026-05-13 15:01:01,481 [INFO] tests.test_my_order - 已通过首页可见入口进入 My Order: a[href*="order" i]
|
||||
2026-05-13 15:01:01,481 [INFO] tests.test_my_order - 等待进入订单列表页
|
||||
2026-05-13 15:01:02,386 [INFO] tests.test_my_order - 点击第一笔订单详情入口
|
||||
2026-05-13 15:01:02,551 [INFO] tests.test_my_order - 已点击订单详情入口: a[href*="order" i]
|
||||
2026-05-13 15:01:32,567 [INFO] tests.test_my_order - 点击第一笔订单后 URL 未变化,继续校验当前页面是否展示详情内容
|
||||
--- Logging error ---
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\logging\__init__.py", line 1154, in emit
|
||||
stream.write(msg + self.terminator)
|
||||
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
||||
OSError: [WinError 6] 句柄无效。
|
||||
Call stack:
|
||||
File "c:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\test_my_order.py", line 132, in <module>
|
||||
raise SystemExit(pytest.main([str(Path(__file__))]))
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 199, in main
|
||||
ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 365, in pytest_cmdline_main
|
||||
return wrap_session(config, _main)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 318, in wrap_session
|
||||
session.exitstatus = doit(config, session) or 0
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 372, in _main
|
||||
config.hook.pytest_runtestloop(session=session)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\main.py", line 396, in pytest_runtestloop
|
||||
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 118, in pytest_runtest_protocol
|
||||
runtestprotocol(item, nextitem=nextitem)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 142, in runtestprotocol
|
||||
reports.append(call_and_report(item, "teardown", log, nextitem=nextitem))
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 244, in call_and_report
|
||||
call = CallInfo.from_call(
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 353, in from_call
|
||||
result: TResult | None = func()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 245, in <lambda>
|
||||
lambda: runtest_hook(item=item, **kwds),
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
|
||||
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
|
||||
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
|
||||
res = hook_impl.function(*args)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 194, in pytest_runtest_teardown
|
||||
item.session._setupstate.teardown_exact(nextitem)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\runner.py", line 555, in teardown_exact
|
||||
fin()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 1042, in finish
|
||||
fin()
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\allure_commons\_allure.py", line 274, in __call__
|
||||
return self._fixture_function(*args, **kwargs)
|
||||
File "C:\Users\a\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\fixtures.py", line 924, in _teardown_yield_fixture
|
||||
next(it)
|
||||
File "C:\Users\a\PyCharmMiscProject\smart-management-auto-test\Joyhub_ui_auto_test\tests\conftest.py", line 217, in test_run_logger
|
||||
logger.info("用例通过: %s, 耗时: %.2fs", case_name, elapsed)
|
||||
Message: '用例通过: %s, 耗时: %.2fs'
|
||||
Arguments: ('tests/test_my_order.py::test_home_my_order_first_order_detail_after_login[chromium]', 34.6412463998422)
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "6fb4f67c-0996-4d3a-b6bb-131b514cd73b", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "delete_output_dir", "status": "passed", "start": 1778655657257, "stop": 1778655657257}], "start": 1778655657257, "stop": 1778655692805}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "01d9fdb4-9fb2-4605-a16a-234b12a33f83", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "launch_browser", "status": "passed", "start": 1778655657868, "stop": 1778655657868}], "start": 1778655657868, "stop": 1778655692791}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "fd99d37d-928b-4b04-9e1b-10a817b95b47", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "pytestconfig", "status": "passed", "start": 1778655657257, "stop": 1778655657257}], "start": 1778655657257, "stop": 1778655692806}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "6064a954-090e-4143-b2ca-637469cd208d", "befores": [{"name": "browser_name", "status": "passed", "start": 1778655657868, "stop": 1778655657868}], "start": 1778655657868, "stop": 1778655692793}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "529b5b6e-198c-46f2-9f37-6e40e8881e76", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "output_path", "status": "passed", "start": 1778655658064, "stop": 1778655658064}], "start": 1778655658064, "stop": 1778655692694}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "007df399-9a36-4b6f-9c68-c23d8fb4aed3", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "browser", "status": "passed", "start": 1778655657868, "stop": 1778655658053}], "afters": [{"name": "browser::0", "status": "passed", "start": 1778655692710, "stop": 1778655692790}], "start": 1778655657868, "stop": 1778655692790}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "69515af6-0f02-46a7-b539-321b90e0147d", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "browser_type_launch_args", "status": "passed", "start": 1778655657257, "stop": 1778655657257}], "start": 1778655657257, "stop": 1778655692805}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "b304283b-89a9-4b44-9a99-97f54c0f22e0", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "_artifacts_recorder", "status": "passed", "start": 1778655658064, "stop": 1778655658064}], "afters": [{"name": "_artifacts_recorder::0", "status": "passed", "start": 1778655692692, "stop": 1778655692692}], "start": 1778655658064, "stop": 1778655692692}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "2fd6945d-ee37-41a4-b801-9852d2a0693d", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "page", "status": "passed", "start": 1778655658074, "stop": 1778655658144}], "start": 1778655658074, "stop": 1778655692673}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "c3f0b0fd-e5cc-4a5b-8390-0b397c058b68", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "new_context", "status": "passed", "start": 1778655658064, "stop": 1778655658064}], "afters": [{"name": "new_context::0", "status": "passed", "start": 1778655692673, "stop": 1778655692690}], "start": 1778655658064, "stop": 1778655692690}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "34a96b80-de55-4e7e-9d59-2d0409bd03a1", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "context", "status": "passed", "start": 1778655658064, "stop": 1778655658074}], "start": 1778655658064, "stop": 1778655692673}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 157 KiB |
@@ -0,0 +1 @@
|
||||
{"uuid": "edf34d98-6a82-452f-837e-0d2d01a2edfc", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "playwright", "status": "passed", "start": 1778655657257, "stop": 1778655657867}], "afters": [{"name": "playwright::0", "status": "passed", "start": 1778655692793, "stop": 1778655692804}], "start": 1778655657257, "stop": 1778655692804}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "459ae7eb-ae1f-4c68-8894-01e0e8709de4", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "browser_context_args", "status": "passed", "start": 1778655658055, "stop": 1778655658055}], "start": 1778655658054, "stop": 1778655692705}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "995d73a5-f6ef-475e-aeb9-dff8ee4a4f07", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "connect_options", "status": "passed", "start": 1778655657868, "stop": 1778655657868}], "start": 1778655657868, "stop": 1778655692792}
|
||||
@@ -0,0 +1,12 @@
|
||||
[32mINFO [0m ui-test:conftest.py:207 用例开始: tests/test_my_order.py::test_home_my_order_first_order_detail_after_login[chromium]
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:121 登录用户从首页进入 My Order 并查看第一笔订单详情
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:122 打开链接地址: https://joyhub-website-frontend-test.best-envision.com/
|
||||
[32mINFO [0m ui-test:conftest.py:67 当前未登录,执行配置用户登录
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:64 等待登录完成并展示用户菜单入口
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:80 从首页查找 My Order 入口
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:83 已通过首页可见入口进入 My Order: a[href*="order" i]
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:98 等待进入订单列表页
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:104 点击第一笔订单详情入口
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:107 已点击订单详情入口: a[href*="order" i]
|
||||
[32mINFO [0m tests.test_my_order:test_my_order.py:112 点击第一笔订单后 URL 未变化,继续校验当前页面是否展示详情内容
|
||||
[32mINFO [0m ui-test:conftest.py:217 用例通过: tests/test_my_order.py::test_home_my_order_first_order_detail_after_login[chromium], 耗时: 34.64s
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "2a1deae7-088c-4104-bd91-fa0dacda7f17", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "base_url", "status": "passed", "start": 1778655657257, "stop": 1778655657257}], "start": 1778655657257, "stop": 1778655692807}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "8c6f1d2b-f0e0-414a-898d-6324db2aeb30", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "browser_type_launch_args", "status": "passed", "start": 1778655657257, "stop": 1778655657257}], "start": 1778655657257, "stop": 1778655692805}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "90f67c65-1546-43fc-9167-f6489b805e5b", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "ensure_logged_in_user", "status": "passed", "start": 1778655658144, "stop": 1778655658144}], "start": 1778655658144, "stop": 1778655692671}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "5ffcf5ab-d935-4578-946e-7e02912e9116", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "_session_faker", "status": "passed", "start": 1778655657130, "stop": 1778655657256}], "start": 1778655657130, "stop": 1778655692807}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "3fc9fda4-5df3-45e6-8e8b-e4d1150a4400", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "test_run_logger", "status": "passed", "start": 1778655658055, "stop": 1778655658064}], "afters": [{"name": "test_run_logger::0", "status": "passed", "start": 1778655692696, "stop": 1778655692701}], "start": 1778655658055, "stop": 1778655692701}
|
||||
@@ -0,0 +1 @@
|
||||
{"name": "test_home_my_order_first_order_detail_after_login[chromium]", "status": "passed", "attachments": [{"name": "结束截图_test_home_my_order_first_order_detail_after_login_chromium", "source": "4ef9f08c-b827-492f-9aaf-ed1a28624681-attachment.png", "type": "image/png"}, {"name": "log", "source": "665da2e0-dde8-4704-89f8-b2371361f96a-attachment.txt", "type": "text/plain"}, {"name": "stderr", "source": "09d63c23-d43b-46a5-938b-36a32ea8c80c-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "browser_name", "value": "'chromium'"}], "start": 1778655658145, "stop": 1778655692585, "uuid": "7602ae17-3e24-4849-bf95-b40b310c6175", "historyId": "ba90716d807251b044491f8e7c108076", "testCaseId": "e1408d6ca2eedd5983ee820eb1ea09dc", "fullName": "tests.test_my_order#test_home_my_order_first_order_detail_after_login", "labels": [{"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_my_order"}, {"name": "host", "value": "LAPTOP-84D825D0"}, {"name": "thread", "value": "37548-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_my_order"}], "titlePath": ["tests", "test_my_order.py"]}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "2b259c57-1196-46b6-a589-421629a3e558", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "device", "status": "passed", "start": 1778655658053, "stop": 1778655658053}], "start": 1778655658053, "stop": 1778655692708}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "6393c1c2-4a61-46f5-82b5-87344215152d", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "browser_context_args", "status": "passed", "start": 1778655658055, "stop": 1778655658055}], "start": 1778655658055, "stop": 1778655692703}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "eec7db87-4529-46b7-833f-ce4919241f18", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "browser_type", "status": "passed", "start": 1778655657868, "stop": 1778655657868}], "start": 1778655657868, "stop": 1778655692793}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "3fcabe54-329c-41cd-902e-aad2c2cf2c25", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "_verify_url", "status": "passed", "start": 1778655657257, "stop": 1778655657257}], "start": 1778655657257, "stop": 1778655692806}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid": "598a8d89-cb6d-406d-953e-7ec6f2aadb31", "children": ["7602ae17-3e24-4849-bf95-b40b310c6175"], "befores": [{"name": "_pw_artifacts_folder", "status": "passed", "start": 1778655658053, "stop": 1778655658054}], "afters": [{"name": "_pw_artifacts_folder::0", "status": "passed", "start": 1778655692706, "stop": 1778655692707}], "start": 1778655658053, "stop": 1778655692707}
|
||||
Reference in New Issue
Block a user