添加赔率
This commit is contained in:
@@ -146,7 +146,7 @@ class MatchOddsTest(unittest.TestCase):
|
||||
self.assertEqual(json.loads(params[-2])["moneyline"]["draw"], "3.90")
|
||||
|
||||
def test_run_skips_without_credentials(self):
|
||||
result = run({"prefix": "la_"}, env={})
|
||||
result = run({"prefix": "la_"}, env={"TITAN_ODDS_ENABLED": "0"})
|
||||
|
||||
self.assertFalse(result["success"])
|
||||
self.assertEqual(result["candidate_count"], 0)
|
||||
@@ -182,6 +182,7 @@ class MatchOddsTest(unittest.TestCase):
|
||||
"ODDS_SPORT_TYPES": "FT",
|
||||
"ODDS_SHOW_TYPES": "today",
|
||||
"ODDS_REQUEST_DELAY_SECONDS": "0",
|
||||
"TITAN_ODDS_ENABLED": "0",
|
||||
},
|
||||
)
|
||||
|
||||
@@ -234,6 +235,7 @@ class MatchOddsTest(unittest.TestCase):
|
||||
"ODDS_SPORT_TYPES": "FT",
|
||||
"ODDS_SHOW_TYPES": "today,early",
|
||||
"ODDS_REQUEST_DELAY_SECONDS": "0",
|
||||
"TITAN_ODDS_ENABLED": "0",
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
if str(ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
from titan_odds import (
|
||||
build_titan_odds_items,
|
||||
parse_titan_odds_script,
|
||||
parse_titan_schedule_script,
|
||||
)
|
||||
|
||||
|
||||
SCHEDULE_SCRIPT = r"""
|
||||
var arrCup = [75,'世界杯','世界盃','World Cup','世界杯','世界盃','World Cup','2026'];
|
||||
jh["G27976"] = [[2907402,75,0,'2026-07-12 05:00',640,744,'','','19','4',-0.5,-0.25,'2.5','1']];
|
||||
var arrTeam = [
|
||||
[640,'挪威','挪威','Norway','','images/norway.png'],
|
||||
[744,'英格兰','英格蘭','England','','images/england.png']
|
||||
];
|
||||
var lastUpdateTime = '2026-07-11 10:00:12';
|
||||
"""
|
||||
|
||||
ODDS_SCRIPT = """
|
||||
oddsData["O_2907402"]=[[545,3.5,3.6,2.01],[16,3.3,3.55,2.13]];
|
||||
oddsData["L_2907402"]=[[3,0.88,-0.5,0.94],[16,0.86,-0.5,0.98]];
|
||||
oddsData["T_2907402"]=[[3,0.92,2.5,0.88],[16,0.93,2.5,0.87]];
|
||||
"""
|
||||
|
||||
|
||||
class TitanOddsTest(unittest.TestCase):
|
||||
def test_parse_schedule_and_odds_builds_normalized_item(self):
|
||||
schedule = parse_titan_schedule_script(SCHEDULE_SCRIPT)
|
||||
odds = parse_titan_odds_script(ODDS_SCRIPT)
|
||||
|
||||
items = build_titan_odds_items(
|
||||
schedule,
|
||||
odds,
|
||||
source_url="https://zq.titan007.com/cn/CupMatch/75.html",
|
||||
company_id=3,
|
||||
euro_company_id=545,
|
||||
company_name="Crown",
|
||||
)
|
||||
|
||||
self.assertEqual(len(items), 1)
|
||||
item = items[0]
|
||||
self.assertEqual(item["source_site"], "titan007")
|
||||
self.assertEqual(item["source_match_id"], "2907402")
|
||||
self.assertEqual(item["league_name"], "世界杯")
|
||||
self.assertEqual(item["home_team"], "挪威")
|
||||
self.assertEqual(item["away_team"], "英格兰")
|
||||
self.assertEqual(item["show_type"], "early")
|
||||
self.assertEqual(item["strong_side"], "C")
|
||||
self.assertEqual(item["handicap_line"], "0.5")
|
||||
self.assertEqual(item["handicap_home_odds"], "0.88")
|
||||
self.assertEqual(item["handicap_away_odds"], "0.94")
|
||||
self.assertEqual(item["total_line"], "2.5")
|
||||
self.assertEqual(item["home_win_odds"], "3.5")
|
||||
self.assertEqual(item["draw_odds"], "3.6")
|
||||
self.assertEqual(item["away_win_odds"], "2.01")
|
||||
self.assertEqual(item["raw_data"]["selected_company_id"], 3)
|
||||
self.assertEqual(item["raw_data"]["selected_euro_company_id"], 545)
|
||||
|
||||
def test_sparse_schedule_rows_are_parsed_without_eval(self):
|
||||
script = r"""
|
||||
var arrCup = [75,'世界杯','','','','','','2026'];
|
||||
jh["G27977"] = [[2907405,75,0,'2026-07-16 03:00',77068,77069,'','','','',,,'','']];
|
||||
var arrTeam = [[77068,'99胜者'],[77069,'100胜者']];
|
||||
"""
|
||||
|
||||
parsed = parse_titan_schedule_script(script)
|
||||
|
||||
self.assertIn("2907405", parsed["matches"])
|
||||
self.assertEqual(parsed["matches"]["2907405"]["home_team"], "99胜者")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user