perf: 量化商品页打开耗时并去重检查 (#109)

This commit is contained in:
chengma
2026-08-10 17:40:44 +08:00
parent 4c9bf3865b
commit ba0706dc47
13 changed files with 693 additions and 72 deletions
@@ -59,6 +59,7 @@ class FakeDevice:
self.quantity = 1
self.clicks = []
self.opened_urls = []
self.app_wait_calls = 0
def app_current(self):
return {"package": "com.xunmeng.pinduoduo"}
@@ -67,6 +68,7 @@ class FakeDevice:
pass
def app_wait(self, _package, timeout=10):
self.app_wait_calls += 1
return True
def open_url(self, url):
@@ -87,6 +89,25 @@ class FakeDevice:
raise AssertionError(f"未预期的 selector: {selector}")
class ColdStartDevice(FakeDevice):
def __init__(self) -> None:
super().__init__()
self.current_calls = 0
self.app_started = False
def app_current(self):
self.current_calls += 1
package = (
"com.android.launcher"
if self.current_calls == 1
else "com.xunmeng.pinduoduo"
)
return {"package": package}
def app_start(self, _package):
self.app_started = True
class U2PddPurchaseAdapterTest(unittest.TestCase):
def _adapter(self, device, calls):
def select_color_fn(_device, _xml, target, **_kwargs):
@@ -150,6 +171,7 @@ class U2PddPurchaseAdapterTest(unittest.TestCase):
self.assertEqual(calls, [("color", "黑色"), ("size", "3XL【140-165斤】")])
# 只点击一次商品页采购入口;最终“提交订单”从不点击。
self.assertEqual(len(device.clicks), 1)
self.assertEqual(device.app_wait_calls, 0)
def test_unsupported_dynamic_option_stops_before_click(self):
device = FakeDevice()
@@ -163,6 +185,16 @@ class U2PddPurchaseAdapterTest(unittest.TestCase):
self.assertEqual(device.clicks, [])
adapter.close()
def test_cold_start_waits_for_pdd_once(self):
device = ColdStartDevice()
adapter = self._adapter(device, [])
adapter.open_goods(GOODS_URL)
self.assertTrue(device.app_started)
self.assertEqual(device.app_wait_calls, 1)
adapter.close()
def test_captcha_stops_without_waiting_or_clicking(self):
device = FakeDevice(
'<hierarchy><node package="com.xunmeng.pinduoduo" '