±à¼ÍƼö: |
±¾ÎÄÀ´×Ôwww.jb51.net£¬´ó¼ÒÔÚ½Ó¿Ú²âÊԵĹý³ÌÖУ¬ºÜ¶àʱºò»áÓõ½¶ÔCSVµÄ¶ÁÈ¡²Ù×÷£¬±¾ÎÄÖ÷Ҫ˵Ã÷Python3¶ÔCSVµÄдÈëºÍ¶ÁÈ¡¡£ÏÂÃæ»°²»¶à˵ÁË£¬À´Ò»Æð¿´¿´ÏêϸµÄ½éÉܰɡ£ |
|
1¡¢ÐèÇó
ijAPI£¬GET·½·¨£¬token,mobile,emailÈý¸ö²ÎÊý
tokenΪ±ØÌîÏî
mobile,email ±ØÌîÆäÖÐ1Ïî
mobileΪÊÖ»úºÅ,emailΪemail¸ñʽ
2¡¢·½°¸
Õë¶ÔÉÏÃæµÄAPI£¬ÔÚ×ö½Ó¿Ú²âÊÔʱ£¬ÐèÒªµÄ²âÊÔÓÃÀý¶¯éü»á¶à´ï10+, Õâ¸öʱºò²ÉÓÃÊý¾ÝÇý¶¯µÄ·½Ê½½«¹²ÐÔµÄÄÚÈÝдÈëÅäÖÃÎļþ»òÐí»á¸üºÏÊÊ¡£
ÕâÀÂǰÑAPI¡¢²ÎÊý¡¢ÒÔ¼°Ô¤ÆÚ½á¹ûÔ¤ÐÐÔÚ¸ñʽ»¯µÄCSVÀï±£´æ£¬ÀûÓÃcsv×é¼þ´ÓCSVÀï¶ÁÈ¡URL¡¢²ÎÊýÒÔ¼°Ô¤ÆÚ½á¹û£¬Requests×é¼þ·¢ÆðÇëÇ󣬽«ÏìÓ¦½á¹ûÓëÔ¤ÆÚ½á¹û½øÐбȶԣ¬×îºó°Ñ±È¶Ô½á¹ûдµ½½á¹ûCSV¡£
Á÷³ÌÈçÏÂͼ

3¡¢ÊµÏÖ
1¡¢ÔÚÉÏ´úÂë֮ǰ£¬ÏȰ²×°ºÃÈçϼ¸¸ö×é¼þ£º
csv ¶ÁдCSVÎļþ
json
requests ·¢ÆðÇëÇ󣬻ñÈ¡ÏìÓ¦½á¹û
unittest ²âÊÔÓÃÀýµ÷¶È
2¡¢data.csv(±¾Ê¾Àýѡȡ²¿·ÖÓÃÀý£©

3¡¢reader_CSVº¯Êý´úÂëʾÀý
import csv
import json
import requests
import time
import unittest
def readCSV(self,filename):
'''
:param filename: ÐèÒª¶ÁÈ¡µÄÊý¾ÝÎļþ
:return: [{data1},{data2}...]
'''
datas = []
try:
#ÒÔDictReaderµÄ·½Ê½¶ÁÈ¡Êý¾ÝÎļþ£¬·½±ãÓëjson»¥×öת»»
with open(filename,'r') as csvfile :
#´ÓÎļþÀï¶ÁÈ¡µ½µÄÊý¾Ýת»»³É×ÖµäÁбíµÄ¸ñʽ
reader = csv.DictReader(csvfile)
for row in reader:
data = {}
data['id'] = row['id']
data['url'] = row['url']
data['token'] = str(row['token'])
data['mobile'] = row['mobile']
data['email'] = row['email']
data['expect'] = json.dumps(row['expect']) \
if isinstance(row['expect'],dict) \
else row['expect'] #Èç¹ûexpect¶ÁÈ¡³öÀ´µÄ²»ÊÇjsonÔòÈ¡ÆäÔÖµ£¬·ñÔòתΪjson¸ñʽ±£´æµ½resultÀï
datas.append(data)
return datas
#Èç¹ûÎļþÕÒ²»µ½£¬·µ»Ø¿ÕµÄdatas
except FileNotFoundError:
print("Îļþ²»´æÔÚ",filename)
return datas
|
4¡¢request_URLº¯ÊýʾÀý(°üº¬GETÇëÇóºÍPOSTÇëÇó2¸ö·½·¨)
def get_request(self,url,params):
'''
ͨÓõĵ÷ÓÃGET½Ó¿Ú·½·¨
:param url:string ½Ó¿Ú·¾¶
:param params:{"":"","":""}
ÐèÒª´«ÈëµÄ²ÎÊý
:return: responseÏìÓ¦Ìå
'''
print("µ÷ÓÃAPI...")
r = requests.get(url,params=params)
print(r.text)
return r
def post_request(self,url,params):
'''
ͨÓõĵ÷ÓÃPOST½Ó¿Ú·½·¨
:param url: string ½Ó¿Ú·¾¶
:param params: {"":"","":""}
ÐèÒª´«ÈëµÄ²ÎÊý
:return:responseÏìÓ¦Ìå
'''
print("µ÷ÓÃAPI...")
r = requests.post(url,params=json.dumps(params))
#postµÄ·½·¨±ØÐëÓÃjson.dumps()ת»¯³Éjson¸ñʽ
print(r.text)
return r
|
5¡¢assert_Resultº¯ÊýʾÀý
def assertResult(self,except_value,real_value):
'''
УÑéÑù±¾×Ö·û´®ÖÐÊÇ·ñ°üº¬Ö¸¶¨×Ö·û´®
:param except_value: string Ö¸¶¨×Ö·û´®
:param real_value: string Ñù±¾×Ö·û´®
:return: Boolean Ñù±¾Öаüº¬Ö¸¶¨×Ö·û´®·µ»ØTrue,·ñÔò·µ»ØFalse
'''
ifsuccess = except_value in str(real_value)
return ifsuccess
|
6¡¢write_CSVº¯ÊýʾÀý
def writeCSV(self,filename,results):
'''
дÈëcsvÎļþÖ¸¶¨ÄÚÈÝ
:param filename: string ÐèҪдÈëµÄÎļþÃû³Æ
:param results: [{data1},{data2},...] дÈëµÄÄÚÈÝ
:return: ÎÞ
'''
print("дÎļþ:",filename)
#ÒÔDictWriterµÄ·½Ê½Ð´Îļþ
with open(filename,'w+') as csvfile:
headers="id,url,token,mobile,email, expect,real_value, assert_value".split(",")
writer = csv.DictWriter (csvfile,fieldnames=headers)
#д±íÍ·
writer.writeheader()
#дÊý¾Ý
if results.__len__() > 0 :
for result in results:
writer.writerow(result)
csvfile.close()
|
7¡¢test_interface1º¯ÊýʾÀý
def test_interface1(self):
#Ö¸¶¨¶ÁÈ¡µÄÊý¾ÝÎļþÃû³Æ
data_file = "../data/data.csv"
#Ö¸¶¨×îÖÕ½á¹ûÉú³ÉµÄÊý¾ÝÎļþÃû³Æ
result_file = "../data/result_{}.csv".format(str(time.time()).split(".")[0])
#¶Áȡָ¶¨ÎļþµÄÊý¾Ý
datas = self.readCSV(data_file)
#Êý¾ÝÎļþÓÐÄÚÈÝÔòµ÷Óýӿڣ¬·ñÔòÖ±½Ó²âÊÔ½áÊø
if datas.__len__() > 0:
results =[]
#»ñÈ¡Êý¾ÝÎļþÀïµÄÿһÐÐ
for testcase in datas :
result = {}
result["id"] = testcase["id"]
result["url"] = testcase["url"]
result["token"] = testcase["token"]
result["mobile"] = testcase["mobile"]
result["email"] = testcase["email"]
result["expect"] = testcase["expect"]
#×é×°²ÎÊý
params = { "token":result["token"],
"mobile":result["mobile"],
"email":result["email"]
}
#µ÷ÓÃAPI½Ó¿Ú£¬»ñÈ¡ÏìÓ¦½á¹û
real_value = self.get_request(result["url"],params)
#µ÷ÓÃassert·½·¨£¬¼ì²éÔ¤ÆÚ½á¹ûÊÇ·ñÔÚÏìÓ¦½á¹ûÖдæÔÚ
assert_value = self.assertResult(result["expect"],real_value.text)
result["real_value"] = real_value.text
result["assert_value"] = assert_value
#»ñȡÿһÐÐÀïµÄËùÓÐ×Ö¶ÎÒÔ¼°Êµ¼Ê½á¹ûºÍÑéÖ¤½á¹û
results.append(result)
#Ö´ÐÐÍêËùÓмǼºó£¬½«ËùÓнá¹ûдÈëresult.csv
self.writeCSV(result_file,results) #дÈëcsvÎļþ
print("²âÊÔ½áÊø")
|
8¡¢result_1523956055.csv(±¾Ê¾ÀýÖеIJâÊÔ½á¹ûÇëºöÂÔ£©

×ܽá
python·â×°Á˺ܶ෽·¨£¬¶ÔÓÚ²âÊÔÀ´Ëµ¿ª·¢ËÙ¶ÈÏà¶Ô½Ï¿ì£¬½Ó¿Ú×Ô¶¯»¯²âÊÔÈç¹û²ÉÓÃCSV¹ÜÀíµÄÊý¾ÝÇý¶¯·½Ê½£¬Ê¹ÓÃcsv+requestsÊDzâÊÔ¿ª·¢²»ÈÝ´í¹ýµÄÀûÆ÷Ö®Ò»¡£
ºÃÁË£¬ÒÔÉϾÍÊÇÕâÆªÎÄÕµÄÈ«²¿ÄÚÈÝÁË£¬Ï£Íû±¾ÎĵÄÄÚÈݶԴó¼ÒµÄѧϰ»òÕß¹¤×÷¾ßÓÐÒ»¶¨µÄ²Î¿¼Ñ§Ï°¼ÛÖµ£¬Èç¹ûÓÐÒÉÎÊ´ó¼Ò¿ÉÒÔÁôÑÔ½»Á÷£¬Ð»Ð»´ó¼Ò¶Ô½Å±¾Ö®¼ÒµÄÖ§³Ö¡£
|