# Chrome浏览器远程服务地址
chrome_url = r'http://localhost:5143'
# Edge浏览器远程服务地址
edge_url = r'http://localhost:9438'
localhost
:本地服务192.168.1.100:4444
:局域网内其他机器cloud-test.com:443
:云端测试平台# 从caps_setting导入预定义配置
from chap9.caps_setting import *
# Chrome配置示例
CHROME_CAPS_1 = {
'browserName': 'chrome',
'goog:chromeOptions': {
'args': ['--headless', '--disable-gpu']
}
}
CHROME_CAPS_2 = {
'browserName': 'chrome',
'goog:chromeOptions': {
'args': ['--window-size=1920,1080']
}
}
# Edge配置示例
EDGE_CAPS_1 = {
'browserName': 'MicrosoftEdge',
'ms:edgeOptions': {
'args': ['--inprivate']
}
}
test_suit_func = [
# 任务组1:在Chrome服务1上执行登录测试
([test_login], chrome_url, CHROME_CAPS_1),
# 任务组2:在Chrome服务2上执行搜索测试
([test_search], chrome_url, CHROME_CAPS_2),
# 任务组3:在Edge服务上执行搜索测试
([test_search], edge_url, EDGE_CAPS_1)
]
(测试函数列表, WebDriver URL, 浏览器配置)
test_suit_cls = [
# 任务组1:在Chrome服务1上执行登录测试类
([AsyncTestLogin], chrome_url, CHROME_CAPS_1),
# 任务组2:在Chrome服务1上再次执行登录测试类
([AsyncTestLogin], chrome_url, CHROME_CAPS_1),
# 任务组3:在Chrome服务2上执行主功能测试类
([AsyncTestMain], chrome_url, CHROME_CAPS_2),
# 任务组4:在Edge服务上执行主功能测试类
([AsyncTestMain], edge_url, EDGE_CAPS_1)
]
main_func(test_suit_func)
# main_cls(test_suit_cls) # 本例中注释掉
主控制机
├── 任务组1 → Chrome服务1 (localhost:5143)
├── 任务组2 → Chrome服务2 (localhost:5143) 不同配置
└── 任务组3 → Edge服务 (localhost:9438)
时间 | 任务组1 (Chrome服务1) | 任务组2 (Chrome服务2) | 任务组3 (Edge服务)
-----|---------------------------|---------------------------|-------------------
0s | 启动浏览器(headless) | 启动浏览器(全屏) | 启动浏览器(隐私模式)
1s | 执行test_login() | 执行test_search() | 执行test_search()
3s | 验证登录成功 | 验证搜索结果 | 验证搜索错误提示
5s | 关闭浏览器 | 关闭浏览器 | 关闭浏览器
# 在机器1 (IP:192.168.1.101) 上启动
chromedriver --port=5143
# 在机器2 (IP:192.168.1.102) 上启动
chromedriver --port=5143
# 在机器3 (IP:192.168.1.103) 上启动
msedgedriver --port=9438
chrome_url1 = r'http://192.168.1.101:5143'
chrome_url2 = r'http://192.168.1.102:5143'
edge_url = r'http://192.168.1.103:9438'
test_suit_func = [
([test_login], chrome_url1, CHROME_CAPS),
([test_search], chrome_url2, CHROME_CAPS),
([test_search], edge_url, EDGE_CAPS)
]
任务组 | 服务地址 | 浏览器类型 | 内存占用 | CPU使用 |
---|---|---|---|---|
组1 | localhost:5143 | Chrome | 320MB | 12% |
组2 | localhost:5143 | Chrome | 350MB | 15% |
组3 | localhost:9438 | Edge | 380MB | 14% |
执行方式 | 任务数 | 串行耗时 | 并行耗时 | 效率提升 |
---|---|---|---|---|
函数测试 | 3 | 45秒 | 20秒 | 125% |
from chap9.async_test_func import test_search, test_login
from chap9.async_test_cls import AsyncTestMain, AsyncTestLogin
from chap9.async_main import main_cls, main_func
from chap9.caps_setting import *
chrome_url = r'http://localhost:5143'
edge_url = r'http://localhost:9438'
test_suit_func = [
([test_login, ], chrome_url, CHROME_CAPS_1),
([test_search, ], chrome_url, CHROME_CAPS_2),
([test_search, ], edge_url, EDGE_CAPS_1)
]
# 注意:测试类在整个代码运行过程中,测试类只会被创建一次,它在内存有唯一的地址
test_suit_cls = [
([AsyncTestLogin, ], chrome_url, CHROME_CAPS_1),
([AsyncTestLogin, ], chrome_url, CHROME_CAPS_1),
([AsyncTestMain, ], chrome_url, CHROME_CAPS_2),
([AsyncTestMain, ], edge_url, EDGE_CAPS_1)
]
main_func(test_suit_func)
# main_cls(test_suit_cls)
这种分布式测试架构通过将测试任务分发到不同服务节点,显著提高了测试执行效率,特别适合大型项目的快速验证需求。
「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路!