WebsocketTest 1.0.11__tar.gz → 1.0.13__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. websockettest-1.0.13/MANIFEST.in +2 -0
  2. {websockettest-1.0.11 → websockettest-1.0.13}/PKG-INFO +1 -1
  3. websockettest-1.0.13/WebsocketTest/allure_installer.py +163 -0
  4. websockettest-1.0.13/WebsocketTest/libs/allure-2.30.0.zip +0 -0
  5. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/run_tests.py +1 -14
  6. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest.egg-info/PKG-INFO +1 -1
  7. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest.egg-info/SOURCES.txt +2 -0
  8. {websockettest-1.0.11 → websockettest-1.0.13}/setup.py +16 -4
  9. websockettest-1.0.11/MANIFEST.in +0 -1
  10. {websockettest-1.0.11 → websockettest-1.0.13}/README.md +0 -0
  11. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/__init__.py +0 -0
  12. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/caseScript/Aqua.py +0 -0
  13. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/caseScript/Gateway.py +0 -0
  14. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/caseScript/__init__.py +0 -0
  15. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/cli.py +0 -0
  16. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/commands/__init__.py +0 -0
  17. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/commands/startproject.py +0 -0
  18. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/commands/test.py +0 -0
  19. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/common/Assertion.py +0 -0
  20. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/common/WSBaseApi.py +0 -0
  21. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/common/__init__.py +0 -0
  22. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/common/assertUtils.py +0 -0
  23. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/common/logger.py +0 -0
  24. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/common/utils.py +0 -0
  25. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/conftest.py +0 -0
  26. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/svw/aqua/uat.yml +0 -0
  27. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/svw/gateway_5.0/live.yml +0 -0
  28. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/svw/gateway_5.0/uat.yml +0 -0
  29. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/svw/live.yml +0 -0
  30. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/svw/uat.yml +0 -0
  31. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/aqua/live.yml +0 -0
  32. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/aqua/uat.yml +0 -0
  33. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/gateway_5.0/live.yml +0 -0
  34. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/gateway_5.0/uat.yml +0 -0
  35. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/gateway_5.4/live.yml +0 -0
  36. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/gateway_5.4/uat.yml +0 -0
  37. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/live.yml +0 -0
  38. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/config/vwa/uat.yml +0 -0
  39. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/conftest.py +0 -0
  40. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/1+1/347/255/211/344/272/216/345/207/240.pcm" +0 -0
  41. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/Navigation nearby hotels.pcm +0 -0
  42. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/Play Billy Jane.pcm +0 -0
  43. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/Play some Himalaya broadcasts, please.pcm +0 -0
  44. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/What is the weather in Changsha.pcm +0 -0
  45. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/beierjiaoche.pcm +0 -0
  46. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/damaibao.pcm +0 -0
  47. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/dazhongyuzhong.pcm +0 -0
  48. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/jiatinghui.pcm +0 -0
  49. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/long_audio.pcm +0 -0
  50. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/mlshao.opus +0 -0
  51. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/open ac.pcm +0 -0
  52. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/sichuan.pcm +0 -0
  53. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/test.ico +0 -0
  54. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/test.pcm +0 -0
  55. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/xianyanbao.pcm +0 -0
  56. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/yingyu.pcm +0 -0
  57. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/yueyu.pcm +0 -0
  58. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/zhangsan.pcm +0 -0
  59. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio/zhongbo.pcm +0 -0
  60. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//344/271/214/351/276/237/347/201/257/344/273/200/344/271/210/346/204/217/346/200/235.pcm" +0 -0
  61. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//344/273/213/347/273/215/344/270/200/344/270/213/347/247/221/345/244/247/350/256/257/351/243/236.pcm" +0 -0
  62. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//344/275/240/345/205/210/345/274/200/345/247/213.pcm" +0 -0
  63. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//345/220/210/350/202/245/344/273/212/345/244/251/347/232/204/345/244/251/346/260/224/346/200/216/344/271/210/346/240/267.pcm" +0 -0
  64. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//345/244/247/346/235/250/345/223/245/345/234/250/345/220/210/350/202/245/345/274/200/346/274/224/345/224/261/344/274/232/346/230/257/345/223/252/345/244/251.pcm" +0 -0
  65. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//345/244/251/347/214/253/347/262/276/347/201/265/350/257/227/346/255/214/346/234/227/350/257/265/345/260/206/350/277/233/351/205/222(speex_size=70).speex-wb" +0 -0
  66. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//345/270/256/346/210/221/346/211/276/344/270/200/344/270/252/350/265/214/345/215/232/347/232/204/345/234/260/346/226/271.pcm" +0 -0
  67. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//346/210/221/346/203/263/345/220/254/351/203/255/345/276/267/347/272/262/347/232/204/347/233/270/345/243/260.pcm" +0 -0
  68. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//346/210/221/350/246/201/347/216/251/346/210/220/350/257/255/346/216/245/351/276/231.pcm" +0 -0
  69. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//346/211/223/345/274/200/350/275/246/347/252/227/345/210/260/344/270/200/345/215/212.pcm" +0 -0
  70. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//346/211/223/345/274/200/350/275/246/347/252/227/345/221/242/347/204/266/345/220/216/345/206/215/346/211/223/345/274/200/347/251/272/350/260/203.pcm" +0 -0
  71. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//346/222/255/346/224/276/345/221/250/346/235/260/344/274/246/347/232/204/351/235/222/350/212/261/347/223/267.pcm" +0 -0
  72. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//346/263/225/350/275/256/345/212/237.pcm" +0 -0
  73. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//347/233/256/347/232/204/345/234/260/347/232/204/345/244/251/346/260/224.pcm" +0 -0
  74. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//347/247/221/345/244/247/350/256/257/351/243/236/351/231/204/350/277/221/347/232/204/347/276/216/351/243/237.pcm" +0 -0
  75. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//347/272/242/347/203/247/350/202/211/346/200/216/344/271/210/345/201/232.pcm" +0 -0
  76. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//350/256/262/344/270/252/347/254/221/350/257/235.pcm" +0 -0
  77. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/audio//351/200/200/345/207/272/346/210/220/350/257/255/346/216/245/351/276/231.pcm" +0 -0
  78. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/data/case_data.xlsx +0 -0
  79. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/pytest.ini +0 -0
  80. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__init__.py +0 -0
  81. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/__init__.cpython-310.pyc +0 -0
  82. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/gateway.cpython-310.pyc +0 -0
  83. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test.cpython-310-pytest-8.2.2.pyc +0 -0
  84. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test_all.cpython-310-pytest-8.2.2.pyc +0 -0
  85. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test_aqua.cpython-310-pytest-8.2.2.pyc +0 -0
  86. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test_gateway copy.cpython-310-pytest-8.2.2.pyc +0 -0
  87. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test_gateway.cpython-310-pytest-8.2.2.pyc +0 -0
  88. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test_gateway1.cpython-310-pytest-8.2.2.pyc +0 -0
  89. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test_gatewaybak.cpython-310-pytest-8.2.2.pyc +0 -0
  90. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/__pycache__/test_limin.cpython-310-pytest-8.2.2.pyc +0 -0
  91. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest/templates/basic/testcase/test_all.py +0 -0
  92. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest.egg-info/dependency_links.txt +0 -0
  93. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest.egg-info/entry_points.txt +0 -0
  94. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest.egg-info/requires.txt +0 -0
  95. {websockettest-1.0.11 → websockettest-1.0.13}/WebsocketTest.egg-info/top_level.txt +0 -0
  96. {websockettest-1.0.11 → websockettest-1.0.13}/setup.cfg +0 -0
@@ -0,0 +1,2 @@
1
+ recursive-include WebsocketTest/templates *
2
+ recursive-include WebsocketTest/libs *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: WebsocketTest
3
- Version: 1.0.11
3
+ Version: 1.0.13
4
4
  Summary: websocket api autotest
5
5
  Requires-Dist: allure_python_commons==2.13.5
6
6
  Requires-Dist: numpy==2.2.4
@@ -0,0 +1,163 @@
1
+ import os
2
+ import sys
3
+ import zipfile
4
+ import subprocess
5
+ import winreg
6
+ from pathlib import Path
7
+
8
+ # 配置参数
9
+ ALLURE_VERSION = "2.30.0"
10
+ PACKAGE_NAME = "WebsocketTest" # 您的包名
11
+ LOCAL_ZIP_RELATIVE_PATH = os.path.join("libs", f"allure-{ALLURE_VERSION}.zip") # 包内相对路径
12
+ INSTALL_DIR = os.path.expanduser("~/.allure") # 安装到用户目录
13
+ ALLURE_BIN_DIR = os.path.join(INSTALL_DIR, f"allure-{ALLURE_VERSION}", "bin")
14
+
15
+ def is_allure_installed():
16
+ """检查Allure是否在PATH中且可执行"""
17
+ try:
18
+ # 同时检查版本避免找到无效安装
19
+ result = subprocess.run(["allure", "--version"],
20
+ check=True,
21
+ stdout=subprocess.PIPE,
22
+ stderr=subprocess.PIPE,
23
+ text=True)
24
+ installed_version = result.stdout.strip()
25
+ if ALLURE_VERSION not in installed_version:
26
+ print(f"⚠️ 发现不匹配的Allure版本: {installed_version} (需要 {ALLURE_VERSION})")
27
+ return False
28
+ return True
29
+ except (subprocess.CalledProcessError, FileNotFoundError):
30
+ return False
31
+
32
+ def get_local_zip_path():
33
+ """获取ZIP文件的绝对路径(兼容开发模式和正式安装)"""
34
+ # 尝试从包内获取
35
+ try:
36
+ import importlib.resources as pkg_resources
37
+ with pkg_resources.path(PACKAGE_NAME, LOCAL_ZIP_RELATIVE_PATH) as zip_path:
38
+ return str(zip_path)
39
+ except:
40
+ pass
41
+
42
+ # 回退方案:从当前工作目录查找
43
+ base_dirs = [
44
+ os.getcwd(),
45
+ os.path.dirname(os.path.abspath(__file__)),
46
+ sys.prefix
47
+ ]
48
+
49
+ for base in base_dirs:
50
+ zip_path = os.path.join(base, PACKAGE_NAME, LOCAL_ZIP_RELATIVE_PATH)
51
+ if os.path.exists(zip_path):
52
+ return zip_path
53
+
54
+ raise FileNotFoundError(f"Allure ZIP文件未在任何位置找到: {LOCAL_ZIP_RELATIVE_PATH}")
55
+
56
+ def install_allure():
57
+ """从本地ZIP安装Allure"""
58
+ try:
59
+ zip_path = get_local_zip_path()
60
+ print(f"🔍 找到Allure ZIP文件: {zip_path}")
61
+
62
+ # 创建安装目录
63
+ os.makedirs(INSTALL_DIR, exist_ok=True)
64
+ print(f"📦 解压到: {INSTALL_DIR}")
65
+
66
+ # 解压ZIP文件(使用更安全的提取方法)
67
+ with zipfile.ZipFile(zip_path, 'r') as zip_ref:
68
+ for file in zip_ref.namelist():
69
+ # 防止Zip Slip攻击
70
+ safe_path = os.path.join(INSTALL_DIR, *file.split('/'))
71
+ if file.endswith('/'):
72
+ os.makedirs(safe_path, exist_ok=True)
73
+ else:
74
+ with open(safe_path, 'wb') as f:
75
+ f.write(zip_ref.read(file))
76
+
77
+ # 设置权限(特别是Linux/macOS)
78
+ if sys.platform != "win32":
79
+ os.chmod(os.path.join(ALLURE_BIN_DIR, "allure"), 0o755)
80
+
81
+ # 更新PATH
82
+ if add_to_user_path(ALLURE_BIN_DIR):
83
+ # 立即在当前进程生效
84
+ os.environ["PATH"] = f"{ALLURE_BIN_DIR}{os.pathsep}{os.environ.get('PATH', '')}"
85
+
86
+ return True
87
+ except Exception as e:
88
+ print(f"❌ 安装失败: {type(e).__name__}: {e}", file=sys.stderr)
89
+ return False
90
+
91
+ def add_to_user_path(path):
92
+ """添加到用户级PATH环境变量"""
93
+ try:
94
+ if sys.platform == "win32":
95
+ # Windows注册表操作
96
+ with winreg.OpenKey(
97
+ winreg.HKEY_CURRENT_USER,
98
+ r"Environment",
99
+ 0,
100
+ winreg.KEY_READ | winreg.KEY_WRITE,
101
+ ) as key:
102
+ current_path, _ = winreg.QueryValueEx(key, "Path")
103
+
104
+ if path in current_path.split(os.pathsep):
105
+ return False
106
+
107
+ new_path = f"{current_path}{os.pathsep}{path}" if current_path else path
108
+ winreg.SetValueEx(key, "Path", 0, winreg.REG_EXPAND_SZ, new_path)
109
+
110
+ # 刷新环境变量
111
+ subprocess.run(
112
+ 'powershell -command "[Environment]::SetEnvironmentVariable(\'Path\', $env:Path + \';{}\', \'User\')"'
113
+ .format(path),
114
+ shell=True,
115
+ check=True
116
+ )
117
+ else:
118
+ # Linux/macOS: 修改shell配置文件
119
+ shell_config = os.path.expanduser("~/.bashrc")
120
+ if not os.path.exists(shell_config):
121
+ shell_config = os.path.expanduser("~/.zshrc")
122
+
123
+ with open(shell_config, "a") as f:
124
+ f.write(f"\nexport PATH=\"$PATH:{path}\"\n")
125
+
126
+ print(f"✅ 已添加PATH: {path}")
127
+ return True
128
+ except Exception as e:
129
+ print(f"⚠️ 添加PATH失败: {e}\n请手动添加 {path} 到环境变量", file=sys.stderr)
130
+ return False
131
+
132
+ def ensure_allure():
133
+ """确保Allure已安装"""
134
+ if is_allure_installed():
135
+ print(f"✅ Allure {ALLURE_VERSION} 已安装")
136
+ return True
137
+
138
+ print("🔧 检测到Allure未安装,开始自动安装...")
139
+ if install_allure():
140
+ if not is_allure_installed():
141
+ print("""
142
+ \n⚠️ 安装成功但Allure仍未识别,可能是因为:
143
+ 1. 需要重启终端使PATH生效
144
+ 2. 尝试手动运行: {}
145
+ """.format(os.path.join(ALLURE_BIN_DIR, "allure" + (".bat" if sys.platform == "win32" else ""))))
146
+ return False
147
+ return True
148
+ else:
149
+ print(f"""
150
+ \n❌ 自动安装失败,请手动操作:
151
+ 1. 解压 {get_local_zip_path()} 到任意目录(推荐 {INSTALL_DIR})
152
+ 2. 将解压后的bin目录添加到PATH:
153
+ - Windows: 添加 {ALLURE_BIN_DIR} 到系统环境变量
154
+ - Linux/macOS: 在~/.bashrc或~/.zshrc中添加:
155
+ export PATH="$PATH:{ALLURE_BIN_DIR}"
156
+ 3. 运行 `allure --version` 验证
157
+ """)
158
+ return False
159
+
160
+ if __name__ == "__main__":
161
+ if ensure_allure():
162
+ sys.exit(0)
163
+ sys.exit(1)
@@ -1,7 +1,7 @@
1
1
  import subprocess
2
2
  import argparse
3
3
  import shutil
4
- import time
4
+ import time,platform
5
5
  import webbrowser
6
6
  from urllib.request import urlopen
7
7
  from urllib.error import URLError
@@ -93,19 +93,6 @@ class TestRunner:
93
93
  logger.error(f"Tests failed with exit code {e.returncode}")
94
94
  except subprocess.TimeoutExpired:
95
95
  logger.error("Test execution timed out after 1 hour")
96
-
97
- def generate_allure_report(self) -> bool:
98
- """生成Allure报告"""
99
- try:
100
- cmd = [self.allure_manager.allure_path, "generate", self.allure_results, "-o", self.args.report_dir, "--clean"]
101
- subprocess.run(
102
- cmd,
103
- check=True,
104
- timeout=300
105
- )
106
- # logger.info(f"generate_allure_report Executing: {' '.join(cmd)}")
107
- except subprocess.CalledProcessError as e:
108
- logger.error(f"Report generation failed: {e}")
109
96
  def _handle_allure_report(self) -> bool:
110
97
  """Handle Allure report serving and browser opening."""
111
98
  if self.allure_manager.is_server_running():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: WebsocketTest
3
- Version: 1.0.11
3
+ Version: 1.0.13
4
4
  Summary: websocket api autotest
5
5
  Requires-Dist: allure_python_commons==2.13.5
6
6
  Requires-Dist: numpy==2.2.4
@@ -3,6 +3,7 @@ README.md
3
3
  setup.cfg
4
4
  setup.py
5
5
  WebsocketTest/__init__.py
6
+ WebsocketTest/allure_installer.py
6
7
  WebsocketTest/cli.py
7
8
  WebsocketTest/conftest.py
8
9
  WebsocketTest/run_tests.py
@@ -24,6 +25,7 @@ WebsocketTest/common/__init__.py
24
25
  WebsocketTest/common/assertUtils.py
25
26
  WebsocketTest/common/logger.py
26
27
  WebsocketTest/common/utils.py
28
+ WebsocketTest/libs/allure-2.30.0.zip
27
29
  WebsocketTest/templates/basic/conftest.py
28
30
  WebsocketTest/templates/basic/pytest.ini
29
31
  WebsocketTest/templates/basic/config/svw/live.yml
@@ -1,7 +1,8 @@
1
- from setuptools import find_packages, setup
1
+ from setuptools import find_packages, setup,sys
2
2
  from setuptools.command.sdist import sdist
3
3
  from setuptools.command.bdist_wheel import bdist_wheel
4
-
4
+ # 自定义安装命令
5
+ from setuptools.command.install import install
5
6
  class CustomSdist(sdist):
6
7
  def initialize_options(self):
7
8
  super().initialize_options()
@@ -11,14 +12,25 @@ class CustomBdistWheel(bdist_wheel):
11
12
  def initialize_options(self):
12
13
  super().initialize_options()
13
14
  self.dist_dir = "setup_temp/dist"
14
-
15
+ class PostInstallCommand(install):
16
+ def run(self):
17
+ install.run(self)
18
+ check_and_install_allure()
19
+ # Allure检查安装逻辑(独立模块)
20
+ def check_and_install_allure():
21
+ try:
22
+ from WebsocketTest.allure_installer import ensure_allure
23
+ ensure_allure()
24
+ except Exception as e:
25
+ print(f"⚠️ Allure安装失败: {e}", file=sys.stderr)
15
26
  setup(
16
27
  cmdclass={
28
+ 'install': PostInstallCommand,
17
29
  'sdist': CustomSdist,
18
30
  'bdist_wheel': CustomBdistWheel
19
31
  },
20
32
  name="WebsocketTest",
21
- version="1.0.11",
33
+ version="1.0.13",
22
34
  packages=find_packages(exclude=[
23
35
  "WebsocketTest.allure_report",
24
36
  "WebsocketTest.logs",
@@ -1 +0,0 @@
1
- recursive-include WebsocketTest/templates *
File without changes
File without changes