import requests
import json
import time
import pytest
url1 = 'http://tmtest.trackingio.com/receive/turl/3r5K1h9'
current_time_13 = int(round(time.time() * 1000))
zf35 = '54321422322132132131213133322323233'
zf130 = 'xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米小米xiaomi小米xiaomi小米xiaomi小米xiaomi小米xiaomi小米xiaomi'
zf128 = 'xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米小米xiaomi小米xiaomi小米xiaomi小米xiaomi小米xiaomi小米xiao'
zf64 = 'xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小'
zf468 = '1.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.2131.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.12.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.12'
zf668 = 'Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36'
zf256 = '测试广告组名称,广告计划名称,广告创意名称,渠道回调id,渠道回调地址等于256字符广告组名称,广告计划名称,广告创意名称,渠道回调id,渠道回调地址等于256字符广告组名称,广告计划名称,广告创意名称,渠道回调id,渠道回调地址等于256字符广告组名称,广告计划名称fff'
global parms

parms = {
    'ry_touchpoint_ts': int(round(time.time() * 1000)),
    # 触点传参时间。is_s2s=1时必传,0时选传。不同渠道有可能传多种格式,详见需求。限制32位字符内。短链传参。
    'ts': int(round(time.time() * 1000)),
    # 集成方式。is_s2s=1为服务器上报触点,0为客户端上报触点。0或1时有不同的参数非空校验,详见需求。固定为0或1。都必传
    'is_s2s': '1',
    # 操作系统。限制16字符内。都选传。短链传参。暂不与app_platform互相做校验。
    'os': 'android',
    # 设备型号。限制64字符内。都选传。短链传参。
    'model': '小米',
    # 用户公网IP v4版本。限制15字符内。is_s2s=1时都必传,0时都选传,0时优先取传参IP,未传参或传参报错时,取http header中的ip作为ipv4的值
    'ipv4': '1.1.1.1',
    # 用户公网IP v6版本。限制128字符内。都选传
    'ipv6': '1.1.1.1',
    # 用户代理信息。限制512字符内。is_s2s=1时都必传,0时都选传,0时优先取传参UA,未传参或报错时,取http header中的user agent作为ua的值
    'ua': 'Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36',
    # Android OAID原值。限制512字符内。Android选传,app_platform=ios时报错
    'oaid': '',
    # Android OAID原值MD5后转小写。固定为32字符。Android选传,app_platform=ios时报错
    'oaid_md5': '',
    # Android主卡IMEI原值。限制32字符内。Android选传,app_platform=ios时报错
    'imei1': '',
    # Android主卡IMEI原值MD5后转小写。固定为32字符。Android选传,app_platform=ios时报错
    'imei1_md5': '',
    # Android副卡IMEI原值。限制32字符内。Android选传,app_platform=ios时报错
    'imei2': '',
    # Android副卡IMEI原值MD5后转小写。固定为32字符。Android选传,app_platform=ios时报错
    'imei2_md5': '',
    # Google Advertising ID原值。固定36字符。Android选传,app_platform=ios时报错
    'gaid': '',
    # Google Advertising ID原值MD5后转小写。固定为32字符。Android选传,app_platform=ios时报错
    'gaid_md5': '',
    # //MAC原值。固定17字符。Android选传,app_platform=ios时报错
    'mac': '',
    # MAC原值MD5后转小写。固定为32字符。Android选传,app_platform=ios时报错
    'mac_md5': '',
    # Android ID原值。固定16字符。Android选传,app_platform=ios时报错
    'android_id': '',
    # Android ID原值MD5后转小写。固定为32字符。Android选传,app_platform=ios时报错
    'android_id_md5': '',
    # 监测短链id。固定7位。
    # 'turl_id': '3r5K1h9',
    # 全部url参数。
    # 'tkul_string': 'xxx',
    # 触点类型。固定为click。都必传
    'touchpoint_type': 'click',
    # 归因类型。固定为ua(user acquirement新客获取)
    'attribution_type': 'ua',

    # 广告账户id。限制64字符内。都选传
    'account_id': '',
    # 广告组id。限制64字符内。都选传
    'adgroup_id': '',
    # 广告组名称。限制256字符内。都选传
    'adgroup_name': '',
    # 广告计划id。限制64字符内。都选传
    'adplan_id': '',
    # 广告计划名称。限制256字符内。都选传
    'adplan_name': '',
    # 广告创意id。限制128字符内。都选传
    'adcreative_id': '',
    # 广告创意名称。限制256字符内。都选传
    'adcreative_name': '',
    # 创意类型(例如大图、小图、视频等)。限制16字符内。都选传
    'adcreative_type': '',
    # 流量媒体id(例如巨量的今日头条、穿山甲、抖音等)。限制32字符内。都选传
    'site_id': '',
    # 流量媒体名称(例如巨量的今日头条、穿山甲、抖音等)。限制128字符内。都选传
    'site_name': '',
    # 广告类型(例如开屏、信息流、搜索等)。限制32字符内。都选传。
    'ad_type': '',
    # 广告位id。限制64字符内。都选传
    'placement_id': '',
    # 转化id。限制64字符内。都选传
    'conversion_id': '',
    # 广告点击id。限制64字符内。都选传
    'click_id': '',
    # 广告展示id。限制64字符内。都选传
    'impression_id': '',
    # 广告请求id。限制64字符内。都选传
    'request_id': '',
    # 渠道回调id。限制256字符。都选传
    'callback_id': 'EJiw267wvfQCGKf2g74ZIPD89-vIATAMOAFCIjIwMTkxMTI3MTQxMTEzMDEwMDI2MDc3MjE1MTUwNTczNTBIAQ==',
    # 渠道回调地址。限制256字符。都选传
    'callback_url': 'http%3A%2F%2Ftracking.e.qq.com%2Fconv%3Fcb%3DMTIzYWJjNDU2ZGVm%26conv_id%3D12345678',

    # 自定触点参数集合。都选传。
    'custom_params_1': 'null'
}
data_temp = json.dumps(parms)

# 有短链及参数要求的用该方法
def send_request(dl, cs):
    global parms
    url1 = 'http://tmtest.trackingio.com/receive/turl/' + dl + cs
    response = requests.get(url=url1, params=parms, timeout=10, verify=False)
    print(response.url)
    print(response.text)
    parms = json.loads(data_temp)
    response = json.loads(response.text)
    return response

# 302跳转时用该方法
def send_request2():
    url1 = 'http://tmtest.trackingio.com/receive/turl/Nja2aaa'
    # parms['ts'] = int(round(time.time() * 1000))
    response = requests.get(url=url1, params=parms, timeout=10, verify=False)
    print(response.url)
    # response = json.loads(response.text)
    return response

# 测试归因用的方法,与其他方法区别在于ts为当前时间
def send_request3(cs):
    global parms
    url1 = 'http://tmtest.trackingio.com/receive/turl/fQvuUba' + cs
    parms['ts'] = int(round(time.time() * 1000))
    response = requests.get(url=url1, params=parms, timeout=10, verify=False)
    print(response.url)
    print(response.text)
    parms = json.loads(data_temp)
    response = json.loads(response.text)
    return response



# 没有短链及参数要求的用该方法,测试环境默认参数为2586渠道短链
# appeky:0dd83bd5079ab3b20d9e66ebb195f6c4
def send_request4():
    global parms
    url1 = 'http://tmtest.trackingio.com/receive/turl/zMFjQva'
    response = requests.get(url=url1, params=parms, timeout=10, verify=False)
    print(response.url)
    print(response.text)
    parms = json.loads(data_temp)
    response = json.loads(response.text)
    return response


# 短链错误
def test_dl():
    re = send_request('33322', '')
    assert re["status"] == 166


# 触点传参时间为正常
def test_ts9():
    parms['ts'] = current_time_13
    re = send_request4()
    assert re["status"] == 0


# 触点传参时间超过13字符
def test_ts8():
    parms['ts'] = '16462909436611321'
    re = send_request4()
    assert re["status"] == 167


# 触点传参时间等于13字符,但是包含特殊字符
def test_ts7():
    parms['ts'] = '1@46290943661'
    re = send_request4()
    assert re["status"] == 167


# 触点传参时间等于13字符,但是包含汉子
def test_ts0():
    parms['ts'] = '1测4690943661'
    re = send_request4()
    assert re["status"] == 167

# iss2s=1,ts为空
def test_ts6():
    parms['ts'] = ""
    parms['is_s2s'] = "1"
    re = send_request4()
    assert re["status"] == 167


# iss2s=0,ts为空,跳转至监测链接的landing_page_url地址
# 短链有地址时跳转至短链地址,短链无地址时,跳转至app地址
def test_ts5():
    parms['ts'] = ""
    parms['is_s2s'] = "0"
    send_request2()



# is_s2s为空,默认为0状态,跳转至监测链接的landing_page_url地址
def test_is_s2s1():
    parms['is_s2s'] = ""
    send_request2()



# is_s2s非0或者1
def test_is_s2s2():
    parms['is_s2s'] = "2"
    re = send_request4()
    assert re["status"] == 165


# 触点类型不为click
def test_touchpoint_type1():
    parms['touchpoint_type'] = 'aaa'
    re = send_request4()
    assert re["status"] == 163


# 触点类型为空
def test_touchpoint_type2():
    parms['touchpoint_type'] = ''
    re = send_request4()
    assert re["status"] == 163


# 归因类型为空
def test_attribution_type1():
    parms['attribution_type'] = ''
    re = send_request4()
    assert re["status"] == 164


# 归因类型为非ua
def test_attribution_type2():
    parms['attribution_type'] = 'test'
    re = send_request4()
    assert re["status"] == 164


# 操作系统为空
def test_os1():
    parms['os'] = ''
    re = send_request4()
    assert re["status"] == 0


# 操作系统超过16个字符
def test_os2():
    parms['os'] = zf35
    re = send_request4()
    assert re["status"] == 115



# 操作系统正常
def test_os3():
    parms['os'] = 'iOS'
    re = send_request4()
    assert re["status"] == 0


# 操作系统包含特殊字符
def test_os4():
    parms['os'] = 'iOS#¥'
    re = send_request4()
    assert re["status"] == 0

# 操作系统正常
def test_os5():
    parms['os'] = 'android'
    re = send_request4()
    assert re["status"] == 0


# 设备型号为空
def test_model1():
    parms['model'] = ''
    re = send_request4()
    assert re["status"] == 0


# 设备型号超过64字符
def test_model2():
    parms['model'] = zf130
    re = send_request4()
    assert re["status"] == 118


# 设备型号=64字符
def test_model3():
    parms['model'] = zf64
    re = send_request4()
    assert re["status"] == 0


# 用户公网IP v4版本,is_s2s为1
def test_ipv41():
    parms['model'] = zf64
    parms['is_s2s'] = '1'
    re = send_request4()
    assert re["status"] == 0


# 用户公网IP v4版本为空,is_s2s为1
def test_ipv42():
    parms['ipv4'] = ""
    parms['is_s2s'] = '1'
    re = send_request4()
    assert re["status"] == 119


# 用户公网IP v4版本超过15字符
def test_ipv43():
    parms['ipv4'] = zf35
    re = send_request4()
    assert re["status"] == 119


# 用户公网IP v4版本为空,is_s2s为0,取http header中的ip作为ipv4/ua的值
def test_ipv44():
    parms['ipv4'] = ""
    parms['is_s2s'] = '0'
    send_request2()



# 用户公网IP v4版本不为空,is_s2s为0,取传的ip值
def test_ipv45():
    parms['ipv4'] = "2.34.34.34"
    parms['is_s2s'] = '0'
    send_request2()


# 用户公网ipv6版本超过128字符
def test_ipv61():
    parms['ipv6'] = zf468
    re = send_request4()
    assert re["status"] == 120


# 用户公网ipv6版本为空
def test_ipv62():
    parms['ipv6'] = ""
    re = send_request4()
    assert re["status"] == 0


# 用户公网ipv6版本为空
def test_ipv63():
    parms['ipv6'] = ""
    re = send_request4()
    assert re["status"] == 0


# 用户代理信息为空,is_s2s=1
def test_ua1():
    parms['ua'] = ""
    parms['is_s2s'] = '1'
    re = send_request4()
    assert re["status"] == 121


# 用户代理信息超过512字符
def test_ua2():
    parms['ua'] = zf668
    parms['is_s2s'] = '1'
    re = send_request4()
    assert re["status"] == 121


# 用户代理信息为空,is_s2s=0
def test_ua3():
    parms['ua'] = ''
    parms['is_s2s'] = '0'
    send_request2()


# OAID超过512字符
def test_oaid1():
    parms['oaid'] = zf668
    re = send_request4()
    assert re["status"] == 126


# OAID为空
def test_oaid2():
    parms['oaid'] = ''
    re = send_request4()
    assert re["status"] == 0


# OAID小于512
def test_oaid3():
    parms['oaid'] = '3DEA635F-B24F-434B-833F-4ED028FEAEEF'
    re = send_request4()
    assert re["status"] == 0


# oaid_md5超过32字符
def test_oaid_md51():
    parms['oaid_md5'] = zf35
    re = send_request4()
    assert re["status"] == 127


# oaid_md5为空
def test_oaid_md52():
    parms['oaid_md5'] = ''
    re = send_request4()
    assert re["status"] == 0


# oaid_md5为32字符
def test_oaid_md53():
    parms['oaid_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 0


# 各个设备的md5为32字符,大写
def test_oaid_md54():
    newlist = ['oaid_md5', 'imei1_md5', 'imei2_md5', 'gaid_md5', 'mac_md5', 'android_id_md5']
    for shebei_md5 in newlist:
        parms[shebei_md5] = '8E488A40A17AED2F6752F51382A4EAFC'
        re = send_request4()
        assert re["status"] == 0


# imei1超过32字符
def test_imei11():
    parms['imei1'] = zf35
    re = send_request4()
    assert re["status"] == 128


# imei1为空
def test_imei12():
    parms['imei1'] = ''
    re = send_request4()
    assert re["status"] == 0


# imei1为正常
def test_imei13():
    parms['imei1'] = '8342732742383'
    re = send_request4()
    assert re["status"] == 0


# imei1_md5非32字符
def test_imei1_md51():
    parms['imei1_md5'] = zf35
    re = send_request4()
    assert re["status"] == 129


# imei1_md5为32字符
def test_imei1_md53():
    parms['imei1_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 0


# imei1_md5为空
def test_imei1_md52():
    parms['imei1_md5'] = ''
    re = send_request4()
    assert re["status"] == 0


# imei2超过32字符
def test_imei21():
    parms['imei2'] = zf35
    re = send_request4()
    assert re["status"] == 130


# imei2为空
def test_imei22():
    parms['imei2'] = ''
    re = send_request4()
    assert re["status"] == 0


# imei2为32字符内
def test_imei23():
    parms['imei2'] = '8342732742383'
    re = send_request4()
    assert re["status"] == 0


# imei2_md5非32字符
def test_imei2_md51():
    parms['imei2_md5'] = zf35
    re = send_request4()
    assert re["status"] == 131


# imei2_md5为空
def test_imei2_md52():
    parms['imei2_md5'] = ''
    re = send_request4()
    assert re["status"] == 0


# imei2_md5为32字符
def test_imei2_md53():
    parms['imei2_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 0


# gaid非36字符
def test_gaid1():
    parms['gaid'] = zf35
    re = send_request4()
    assert re["status"] == 132


# gaid为空
def test_gaid2():
    parms['gaid'] = ''
    re = send_request4()
    assert re["status"] == 0


# gaid为36字符
def test_gaid3():
    parms['gaid'] = 'B21C5EC5-9921-42FD-AAC5-07A0EB6CF1A0'
    re = send_request4()
    assert re["status"] == 0


# gaid_md5非32字符
def test_gaid_md51():
    parms['gaid_md5'] = zf35
    re = send_request4()
    assert re["status"] == 133


# gaid_md5为空
def test_gaid_md52():
    parms['gaid_md5'] = ''
    re = send_request4()
    assert re["status"] == 0


# gaid_md5为32 字符
def test_gaid_md53():
    parms['gaid_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 0


# mac非17个字符
def test_mac1():
    parms['mac'] = "111111"
    re = send_request4()
    assert re["status"] == 134


# mac为空
def test_mac2():
    parms['mac'] = ""
    re = send_request4()
    assert re["status"] == 0


# mac为17字符
def test_mac3():
    parms['mac'] = "08:00:20:0A:8C:6D"
    re = send_request4()
    assert re["status"] == 0


# mac_md5非32字符
def test_mac_md51():
    parms['mac_md5'] = zf35
    re = send_request4()
    assert re["status"] == 135


# mac_md5为空
def test_mac_md52():
    parms['gaid_md5'] = ''
    re = send_request4()
    assert re["status"] == 0


# mac_md5 32字符
def test_mac_md53():
    parms['gaid_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 0


# android_id非16字符
def test_android_id1():
    parms['android_id'] = zf35
    re = send_request4()
    assert re["status"] == 136


# android_id为空
def test_android_id2():
    parms['android_id'] = ''
    re = send_request4()
    assert re["status"] == 0


# android_id为16字符
def test_android_id3():
    parms['android_id'] = '1a34fc556a43c453'
    re = send_request4()
    assert re["status"] == 0


# android_id_md5非32字符
def test_android_id_md51():
    parms['android_id_md5'] = zf35
    re = send_request4()
    assert re["status"] == 189


# android_id_md5为空
def test_android_id_md52():
    parms['android_id_md5'] = ''
    re = send_request4()
    assert re["status"] == 0


# android_id_md5为32字符
def test_android_id_md53():
    parms['android_id_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 0


# 短链是安卓,传idfa
def test_idfa1():
    parms['idfa'] = '3DEA635F-B24F-434B-833F-4ED028FEAEEF'
    re = send_request4()
    assert re["status"] == 115


# 短链是安卓,传idfa_md5
def test_idfa_md51():
    parms['idfa_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 115


# 短链是安卓,传idfv
def test_idfv1():
    parms['idfv'] = '3DEA635F-B24F-434B-833F-4ED028FEAEEF'
    re = send_request4()
    assert re["status"] == 115


# 短链是安卓,传idfv_md5
def test_idfv_md51():
    parms['idfv_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request4()
    assert re["status"] == 115


# oaid","oaid_md5","imei1","imei1_md5","imei2","imei2_md5","mac","mac_md5","mac1","mac1_md5","gaid","gaid_md5"全部为空
def test_empty():
    parms['oaid'] = ''
    parms['oaid_md5'] = ''
    parms['imei1'] = ''
    parms['imei1_md5'] = ''
    parms['imei2'] = ''
    parms['imei2_md5'] = ''
    parms['mac'] = ''
    parms['mac_md5'] = ''
    parms['mac1'] = ''
    parms['mac1_md5'] = ''
    parms['gaid_md5'] = ''
    parms['gaid'] = ''
    re = send_request4()
    assert re["status"] == 0


# 广告相关信息集合为空
def test_ads_data1():
    newlist = ['account_id', 'adgroup_id', 'adgroup_name', 'adplan_id', 'adplan_name', 'adcreative_id',
               'adcreative_name', 'adcreative_type', 'site_id', 'site_name', 'ad_type', 'placement_id', 'conversion_id',
               'click_id', 'impression_id', 'request_id', 'callback_id', 'callback_url']
    for ads_data in newlist:
        parms[ads_data] = ''
        re = send_request4()
        assert re["status"] == 0


# 广告账户id,广告组id,广告计划id,广告位id,转化id,广告点击id,广告展示id,广告请求id等于64字符
def test_ads_data2():
    newlist = ['account_id', 'adgroup_id', 'adplan_id',
               'placement_id', 'conversion_id',
               'click_id', 'impression_id', 'request_id']
    for ads_data in newlist:
        parms[ads_data] = zf64
        re = send_request4()
        assert re["status"] == 0


# 广告账户id,广告组id,广告计划id,广告位id,转化id,广告点击id,广告展示id,广告请求id超过64字符
def test_ads_data3():
    newlist = [{'name': 'account_id', 'status': 168},
               {'name': 'adgroup_id', 'status': 169},
               {'name': 'adplan_id', 'status': 171},
               {'name': 'placement_id', 'status': 179},
               {'name': 'conversion_id', 'status': 180},
               {'name': 'click_id', 'status': 181},
               {'name': 'impression_id', 'status': 182},
               {'name': 'request_id', 'status': 183},
               ]
    for ads_data in newlist:
        parms[ads_data['name']] = zf130
        re = send_request4()
        assert re["status"] == ads_data['status']


# 广告组名称,广告计划名称,广告创意名称,渠道回调id,渠道回调地址超过256字符
def test_ads_data4():
    newlist = [{'name': 'adgroup_name', 'status': 170},
               {'name': 'adplan_name', 'status': 172},
               {'name': 'adcreative_name', 'status': 174},
               {'name': 'callback_id', 'status': 184},
               {'name': 'callback_url', 'status': 185},
               ]
    for ads_data in newlist:
        parms[ads_data['name']] = zf468
        re = send_request4()
        assert re["status"] == ads_data['status']


# 广告组名称,广告计划名称,广告创意名称,渠道回调id,渠道回调地址等于256字符
def test_ads_data5():
    newlist = [{'name': 'adgroup_name', 'status': 0},
               {'name': 'adplan_name', 'status': 0},
               {'name': 'adcreative_name', 'status': 0},
               {'name': 'callback_id', 'status': 0},
               {'name': 'callback_url', 'status': 0},
               ]
    for ads_data in newlist:
        parms[ads_data['name']] = zf256
        re = send_request4()
        assert re["status"] == ads_data['status']


# 广告组名称,广告计划名称,广告创意名称,渠道回调id,渠道回调地址小于256字符且包含特殊字符
def test_ads_data6():
    newlist = [{'name': 'adgroup_name', 'status': 0},
               {'name': 'adplan_name', 'status': 0},
               {'name': 'adcreative_name', 'status': 0},
               {'name': 'callback_id', 'status': 0},
               {'name': 'callback_url', 'status': 0},
               ]
    for ads_data in newlist:
        parms[ads_data['name']] = '测试*test'
        re = send_request4()
        assert re["status"] == ads_data['status']


# 广告创意id,流量媒体名称超过128字符
def test_ads_data7():
    newlist = [{'name': 'adcreative_id', 'status': 0},
               {'name': 'site_name', 'status': 0},
               ]
    for ads_data in newlist:
        parms[ads_data['name']] = zf130
        re = send_request4()
        assert re["status"] == ads_data['status']


# 广告创意id,流量媒体名称等于128字符
def test_ads_data8():
    newlist = [{'name': 'adcreative_id', 'status': 0},
               {'name': 'site_name', 'status': 0},
               ]
    for ads_data in newlist:
        parms[ads_data['name']] = zf128
        re = send_request4()
        assert re["status"] == ads_data['status']


# 创意类型,广告类型,流量媒体id超过32字符
def test_ads_data9():
    newlist = [{'name': 'adcreative_type', 'status': 175},
               {'name': 'site_id', 'status': 176},
               {'name': 'ad_type', 'status': 178},
               ]
    for ads_data in newlist:
        parms[ads_data['name']] = zf35
        re = send_request4()
        assert re["status"] == ads_data['status']


# 创意类型为16字符
def test_ads_data10():
    parms['adcreative_type'] = '大图大图大图大图'
    re = send_request4()
    assert re["status"] == 0


# 流量媒体id为32字符字符
def test_ads_data11():
    parms['site_id'] = '巨量的今日头条、穿山甲、抖音抖音'
    re = send_request4()
    assert re["status"] == 0


# 广告类型为32字符字符
def test_ads_data12():
    parms['ad_type'] = '巨量的今日头条、穿山甲、抖音抖音'
    re = send_request4()
    assert re["status"] == 0


# 自定义触点参数1-10,为32字符内
def test_custom_params1():
    parms['custom_params_1'] = '自定义触点参数'
    parms['custom_params_2'] = '3333 带空格'
    parms['custom_params_3'] = '  '
    parms['custom_params_4'] = '32个字符32个字符32个字符32个字符'
    parms['custom_params_5'] = ''
    parms['custom_params_6'] = '……%¥#¥%……¥#'
    parms['custom_params_7'] = '34343244'
    parms['custom_params_8'] = 'tes rwe ew'
    parms['custom_params_9'] = '_自定义'
    parms['custom_params_10'] = 'test@#'

    re = send_request4()
    assert re["status"] == 0


# 自定义触点参数,超过32字符
def test_custom_params2():
    parms['custom_params_1'] = zf35
    re = send_request4()
    assert re["status"] == 186


if __name__ == '__main__':
    pytest.main()