fix: 售罄临时页仅下拉刷新一次 (#265)
This commit is contained in:
@@ -6,7 +6,9 @@ import xml.etree.ElementTree as ET
|
||||
|
||||
from src.pdd_page_classifier import (
|
||||
ACTION_NETWORK_ERROR,
|
||||
ACTION_OUT_OF_STOCK,
|
||||
ACTION_READY,
|
||||
ACTION_REFRESH,
|
||||
ACTION_REOPEN,
|
||||
ACTION_UNAVAILABLE,
|
||||
ACTION_WAIT,
|
||||
@@ -17,6 +19,7 @@ from src.pdd_page_classifier import (
|
||||
PAGE_LOADING,
|
||||
PAGE_LOGIN_REQUIRED,
|
||||
PAGE_NETWORK_ERROR,
|
||||
PAGE_OUT_OF_STOCK,
|
||||
PAGE_RISK_CONTROL,
|
||||
GoodsOpenTracker,
|
||||
classify_pdd_page,
|
||||
@@ -54,6 +57,7 @@ class PddPageClassifierTest(unittest.TestCase):
|
||||
"请完成验证": PAGE_CAPTCHA,
|
||||
"操作频繁": PAGE_RISK_CONTROL,
|
||||
"立即购买": PAGE_GOODS,
|
||||
"商品已售罄,推荐以下相似商品": PAGE_OUT_OF_STOCK,
|
||||
}
|
||||
for label, expected in cases.items():
|
||||
with self.subTest(label=label):
|
||||
@@ -103,6 +107,35 @@ class PddPageClassifierTest(unittest.TestCase):
|
||||
decision = tracker.observe(observation("网络不给力"), 3.0)
|
||||
self.assertEqual(ACTION_NETWORK_ERROR, decision.action)
|
||||
|
||||
def test_sold_out_page_refreshes_once_then_can_recover(self) -> None:
|
||||
tracker = GoodsOpenTracker(None, 0.0)
|
||||
sold_out = observation("商品已售罄,推荐以下相似商品")
|
||||
|
||||
self.assertEqual(ACTION_REFRESH, tracker.observe(sold_out, 0.2).action)
|
||||
tracker.refreshed_out_of_stock(0.3)
|
||||
self.assertTrue(tracker.out_of_stock_refreshed)
|
||||
self.assertEqual(
|
||||
ACTION_READY,
|
||||
tracker.observe(observation("目标商品 立即购买"), 0.8).action,
|
||||
)
|
||||
|
||||
def test_sold_out_after_refresh_is_unavailable_without_second_refresh(self) -> None:
|
||||
tracker = GoodsOpenTracker(None, 0.0)
|
||||
sold_out = observation("该商品已售罄")
|
||||
|
||||
self.assertEqual(ACTION_REFRESH, tracker.observe(sold_out, 0.2).action)
|
||||
tracker.refreshed_out_of_stock(0.3)
|
||||
self.assertEqual(
|
||||
ACTION_OUT_OF_STOCK,
|
||||
tracker.observe(sold_out, 0.8).action,
|
||||
)
|
||||
with self.assertRaises(RuntimeError):
|
||||
tracker.refreshed_out_of_stock(0.9)
|
||||
|
||||
def test_sku_sold_out_text_is_still_a_normal_goods_page(self) -> None:
|
||||
result = observation("立即购买 尺码 L(售罄)")
|
||||
self.assertEqual(PAGE_GOODS, result.kind)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user