api method
from requests.packages.urllib3.exceptions import InsecureRequestWarning,InsecurePlatformWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
requests.packages.urllib3.disable_warnings(InsecurePlatformWarning)
#获取cookie
def generate_cookies():
loginUrl = setting.HOST + 'api/users/login'
_data = {
'phone': setting.PHONE,
'password': cypto_plain.crypto_by_call_client_java(setting.PHONE_PASSWORD),
'persistent': 'true' }
r = requests.post(url = loginUrl, data = _data,verify=False)
_cookies = r.cookies.get_dict()
return _cookies
def get_cookies():
try:
file = open(setting.COOKIE_TXT,'r')
cookies = pickle.load(file)
file.close()
base_url = setting.HOST + 'profile/api/user-info'
status_code = requests.get(url = base_url,cookies=cookies,verify=False).status_code
if status_code == 200:
return cookies
else:
save_cookies()
except:
return save_cookies()
def save_cookies():
file = open(setting.COOKIE_TXT,'w')
cookies = generate_cookies()
pickle.dump(cookies,file)
file.close()
return cookies
#获取当天零点时间
def get_zerotime():
tm = int(time.time())
dt = datetime.datetime.fromtimestamp(tm).strftime('%Y%m%d%H%M%S')
d_time = time.strptime(dt, '%Y%m%d%H%M%S')
dd_time = datetime.datetime(*d_time[:3])
i_et = int(time.mktime(dd_time.timetuple()))
return i_et
def get_verification(phone):
pkey_file = setting.PKEY
key = paramiko.RSAKey.from_private_key_file(pkey_file)
# key = paramiko.DSSKey.from_private_key(pkey)
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.load_system_host_keys(pkey_file)
cmd = 'tail /home/shared/log/fenbi-verifier.log|grep "Send Phone Verification: '+ phone + '"'
try:
s.connect(hostname = 'soho-ape-fenbi-verifier1-test',port = 22, username ='ape', pkey = key)
except paramiko.AuthenticationException:
print "Auth Failed!"
sys.exit(1)
except paramiko.socket.error:
print "Server is unreachable!"
sys.exit(2)
else:
stdin,stdout,stderr = s.exec_command(cmd)
# p = Popen(cmd, shell=True,stdin=PIPE, stderr=STDOUT, close_fds=True)
output = stdout.read()
stdin.flush()
verification = output[-7:-1]
print output
return verification
def cmp_dict(c1,c2):
if not c1 and not c2:
print "字典为空"
else:
c1_key = sorted(c1.keys())
c2_key = sorted(c2.keys())
print "c1_key:",c1_key
print "c2_key:",c2_key
assert c1_key==c2_key
for i in c1_key:
print i+"_value1:", c1[i]
print i+"_value2:", c2[i]
cmp(c1[i],c2[i])
def cmp_dict1(c1,c2):
if not c1 and not c2:
print "字典为空"
else:
c1_key = sorted(c1.keys())
c2_key = sorted(c2.keys())
print "c1_key:",c1_key
print "c2_key:",c2_key
c1_key_size = len(c1_key)
c2_key_size = len(c2_key)
size = c1_key_size if c1_key_size<c2_key_size else c2_key_size
for i in range(size):
print c1_key[i]+"_value1:", c1[c1_key[i]]
print c2_key[i]+"_value2:", c2[c2_key[i]]
if c1_key[i].isdigit():
cmp1(c1[c1_key[i]],c2[c2_key[i]])
else:
assert c1_key[i]==c2_key[i]
cmp1(c1[c1_key[i]],c2[c2_key[i]])
def cmp_list(c1,c2):
c1 = sorted(c1)
c2 = sorted(c2)
if c1 and c2:
cmp(c1[0],c2[0])
elif c1==[] and c2 ==[]:
print "列表都为空"
def cmp_list1(c1,c2):
c1 = sorted(c1)
c2 = sorted(c2)
if c1 and c2:
cmp1(c1[0],c2[0])
elif c1==[] and c2 ==[]:
print "列表都为空"
def cmp(c1,c2):
t1 = type(c1)
t2 = type(c2)
print t1,t2
if t1 != t2:
return False
else:
if t1 == dict:
return cmp_dict(c1,c2)
elif t1 == list:
return cmp_list(c1,c2)
def cmp1(c1,c2):
t1 = type(c1)
t2 = type(c2)
print t1,t2
if t1 != t2:
return False
else:
if t1 == dict:
return cmp_dict1(c1,c2)
elif t1 == list:
return cmp_list1(c1,c2)
def cmp_content(content,case_name,num=""):
content_map = {}
print case_name+num
print content
if (os.path.exists(setting.content_path)) and (case_name+num in open(setting.content_path).read()):
flag = 1
content_str = open(setting.content_path).read()
content_str = content_str.replace('}{"Test_',', "Test_').replace('}{"TestDev_',', "TestDev_')
content_map = json.loads(content_str)
else:
flag = 0
if flag == 0:
content_map[case_name+num] = content
else:
content_txt = content_map[case_name+num]
cmp(content,content_txt)
if flag == 0:
f = open(setting.content_path,'a')
f.write(json.dumps(content_map))
f.close()
def cmp_content1(content,case_name,num=""):
content_map = {}
print case_name+num
print content
if (os.path.exists(setting.content_path)) and (case_name+num in open(setting.content_path).read()):
flag = 1
content_str = open(setting.content_path).read()
content_str = content_str.replace('}{"Test_',', "Test_').replace('}{"TestDev_',', "TestDev_')
content_map = json.loads(content_str)
else:
flag = 0
if flag == 0:
content_map[case_name+num] = content
else:
content_txt = content_map[case_name+num]
cmp1(content,content_txt)
if flag == 0:
f = open(setting.content_path,'a')
f.write(json.dumps(content_map))
f.close()
def loop(var, key):
if type(var) == type({}):
for (k, v) in var.items():
key[k] = v
loop(v, key)
if type(var) == type([]):
for v in var:
loop(v, key)
def parser(var):
var = json.loads(var)
key = {}
keys = []
loop(var, key)
for (k, v) in key.items():
keys.append(k)
return keys
def get_httpReq(url,code,params=None,**kwargs):
resp = requests.get(url,verify=False,params=params,**kwargs)
status_code = resp.status_code
print "status_code:" ,status_code
assert status_code == code
content = json.loads(resp.content)
return content
def post_httpReq(url,code,data=None,**kwargs):
resp = requests.post(url,verify=False,data=data,**kwargs)
status_code = resp.status_code
print "status_code:" ,status_code
assert status_code == code
content = json.loads(resp.content)
return content
def post_httpReq_no_content(url,code,data=None,**kwargs):
resp = requests.post(url,verify=False,data=data,**kwargs)
status_code = resp.status_code
print "status_code:" ,status_code
# print "content:",resp.content
assert status_code == code
def put_httpReq(url,code,data=None,**kwargs):
resp = requests.put(url,verify=False,data=data,**kwargs)
status_code = resp.status_code
print "status_code:" ,status_code
assert status_code == code
content = json.loads(resp.content)
return content
def put_httpReq_no_content(url,code,data=None,**kwargs):
resp = requests.put(url,verify=False,data=data,**kwargs)
status_code = resp.status_code
print "status_code:" ,status_code
assert status_code == code
def delete_httpReq(url,code,**kwargs):
resp = requests.delete(url,verify=False,**kwargs)
status_code = resp.status_code
print "status_code:" ,status_code
assert status_code == code
# 操作redis来获取验证码
def add_verification(phone):
createdTime = int(time.time())*1000
veri = int(str("%.6f" % time.time()).split('.')[1])
r = redis.Redis(host=setting.redis_host,port=setting.redis_port,db=0,password=setting.redis_pwd)
name = 'vri_phvri:%s'%phone
value = '{"phone":%s,"verification":%s,"createdTime":%s}'%(phone,veri,createdTime)
r.set(name,value,ex=60)
return veri
#获取cookie
def generate_cookies_1(phone,pwd):
loginUrl = setting.HOST + 'api/users/login'
_data = {
'phone': phone,
'password': cypto_plain.crypto_by_call_client_java(pwd),
'persistent': 'true' }
r = requests.post(url = loginUrl, data = _data,verify=False)
_cookies = r.cookies.get_dict()
return _cookies
def get_cookies_1(txt,phone,pwd):
try:
file = open(txt,'r')
cookies = pickle.load(file)
file.close()
base_url = setting.HOST + 'profile/api/user-info'
status_code = requests.get(url = base_url,cookies=cookies,verify=False).status_code
if status_code == 200:
return cookies
else:
return save_cookies_1(txt,phone,pwd)
except:
return save_cookies_1(txt,phone,pwd)
def save_cookies_1(txt,phone,pwd):
file = open(txt,'w')
cookies = generate_cookies_1(phone,pwd)
pickle.dump(cookies,file)
file.close()
return cookies
def str_generator(size=6, chars=string.ascii_uppercase + string.digits):
str = ''.join(random.choice(chars) for x in range(size))
print str
return str
import sys
import os
if __name__ == '__main__':
os.system("rm conf/cookies*")
if sys.argv[1] == "test":
os.system("cp conf/setting_test.py conf/setting.py")
os.system("nosetests Test_teacher/ --with-xunit")
if sys.argv[1] == "online":
os.system("cp conf/setting_online.py conf/setting.py")
os.system("nosetests Test_teacher/Test_*.py --with-xunit")

浙公网安备 33010602011771号