You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

58 lines
2.5 KiB

# -*- coding: utf-8 -*-
"""票 12 不符③冒烟补充:star 中间态逐拍验证(每步新连接,避开 REPEATABLE READ 快照冻结,坑㉕)。
必备环境变量:
CRM_TOKEN Bearer token(经 crm-auth 登录接口获取)
CRM_SMOKE_CID 目标客户 id(任意可操作客户;或先跑 smoke-t12m.py 自动建)
可选:
CRM_BASE 默认 http://localhost:8080
CRM_DB_HOST/CRM_DB_PORT/CRM_DB_USER/CRM_DB_PASSWORD/CRM_DB_NAME 同 smoke-t12m.py
PowerShell 示例:
$env:CRM_TOKEN='...'; $env:CRM_SMOKE_CID='...'; $env:CRM_DB_PASSWORD='...'
python .scratch/customer-module/tools/smoke-t12m2.py
"""
import json
import os
import urllib.request
BASE = os.environ.get('CRM_BASE', 'http://localhost:8080')
token = os.environ.get('CRM_TOKEN')
assert token, '缺 CRM_TOKEN 环境变量(Bearer token,经登录接口获取)'
CID = os.environ.get('CRM_SMOKE_CID')
assert CID, '缺 CRM_SMOKE_CID 环境变量(目标客户 id,可先跑 smoke-t12m.py 自动建)'
def call(method, path):
req = urllib.request.Request(BASE + path, headers={'Authorization': 'Bearer ' + token}, method=method)
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read().decode('utf-8'))
def db_row(tag):
import pymysql
conn = pymysql.connect(host=os.environ.get('CRM_DB_HOST', '127.0.0.1'),
port=int(os.environ.get('CRM_DB_PORT', '3306')),
user=os.environ.get('CRM_DB_USER', 'root'),
password=os.environ.get('CRM_DB_PASSWORD', ''),
database=os.environ.get('CRM_DB_NAME', 'crm'), charset='utf8mb4', autocommit=True)
cur = conn.cursor()
cur.execute("SELECT COUNT(*), IFNULL(SUM(starred), -1) FROM customer_focus WHERE customer_id = %s", (CID,))
row = cur.fetchone()
conn.close()
print('%-12s rows=%s starred_sum=%s' % (tag, row[0], row[1]))
return row
print('focus :', call('POST', '/api/customer/%s/focus' % CID)['code'])
db_row('after-focus')
print('star :', call('POST', '/api/customer/%s/star' % CID)['code'])
r = db_row('after-star')
assert r[1] == 1, 'FAIL: starred should be 1 after star'
print('unstar:', call('POST', '/api/customer/%s/unstar' % CID)['code'])
r = db_row('after-unstar')
assert r == (1, 0), 'FAIL: row kept with starred=0 expected, got %s' % (r,)
print('unfocus:', call('POST', '/api/customer/%s/unfocus' % CID)['code'])
r = db_row('after-unfocus')
assert r[0] == 0, 'FAIL: row should be physically deleted, got %s' % (r,)
print('STAR-SMOKE ALL PASS')