模擬在頁面點選匯入csv

木头左發表於2024-04-20
  • 案例背景

元件效能測試過程中,要匯入大量自定義的資料。

  • 案例分析

本案例中採用python的pandas庫,模擬了生成匯入csv檔案,模擬在頁面點選匯入csv,使檔案匯入更高效。

  • 實現方案

1****、在前端頁面解析內部介面引數

典型的匯入流程至少包含上傳檔案和確認上傳。

  • 上傳檔案

在瀏覽器中開啟F12,進入Network,點選檔案上傳並選擇填好的檔案,可以採集到請求過程中的引數如下:

內部介面地址Request URL:

http://10.1.1.18/ui/person/import

請求頭Request Headers中:

Accept-Encoding: gzip, deflate

Content-Type: multipart/form-data;

Cookie: JSESSIONID=B1E48114C18B15DA7064E55D0706AC30; CASTGC=TGT-4-mfFXZJr9k2VPxsbBinEqgOliUqecTeQWNPekXdHPcUEtryXaJ7-cas

請求引數:

organizationId: 1

language: zh_cn

file: (binary)

2、確認上傳

待匯入檔案校驗完成後,點選匯入,可以採集到確認上傳的引數如下:

內部介面地址Request URL:

http://ip/ui/person/save

請求頭Request Headers中:

Accept-Encoding: gzip, deflate

Content-Type: application/json;charset=UTF-8;

Cookie: JSESSIONID=B1E48114C18B15DA7064E55D0706AC30; CASTGC=TGT-4-mfFXZJr9k2VPxsbBinEqgOliUqecTeQWNPekXdHPcUEtryXaJ7-cas

請求引數:

code: "f82bf0f1-9005-491c-a58b-631d8552f3c8"

flag: 1

orgCode: ""

其中code表示/person/import介面的返回引數校驗任務Id

2****、用指令碼模擬匯入過程

檔案匯入的校驗中有資料庫的唯一性校驗,欄位校驗,用python指令碼可以方便的構造需要格式的csv

1、構造csv

生成隨機的身份證號,大機率唯一。

引入pandas計算庫,構造DataFrame資料型別,並保證到csv檔案中,csv檔案需要以gbk格式寫入。
def to_csv():

personList=[]

personList.append(["姓名:1~32個字元;不能包含 ' / : * ? "" < > | 這些特殊字元。"])

for i in range(10001): code=str(random.randint(100000,999999))+str(random.randint(1950,1999))+'0'+str(random.randint(0,9))+'0'\

+str(random.randint(0,9))+str(100000+i)

personList.append(["測試_"+str(i),"1","預設組織","111",code,code,13165867896])

print(personList)

data1 = pd.DataFrame(personList)

path=r'peson.csv'

file=open(path, 'w+', encoding='utf-8')

data1.to_csv(sep=',', encoding='gbk',index=False, header=False,path_or_buf=path)

2、上傳檔案

前後端互動採用的是介面模式,在Header中加入Cookie即可模擬登入,不會被單點登入攔截。

將上一步生成的csv檔案開啟,作為/ui/person/import介面的file引數傳入,請post方式請求。
def importPersonFromCsv():

global code

url = '=/ui/person/import'

param = ''

user_url = 'http://' + ip + url+param

print(user_url)

# 我們操作檔案上傳的時候,把目標檔案以open開啟,PersonImport.csv

files = [('file', ('peson.csv',open('peson.csv', 'rb'),'application/vnd.ms-excel'))]

data = {"organizationId": "1", "language": "zh_cn"}
headers = {'Accept-Encoding': 'gzip, deflate',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36', 'Cookie': cookie}

r = requests.post(user_url,data,files=files,headers=headers)

print(r.text)

code = r.json().get('data')

print(code)

return code

3、確認匯入

待檔案上傳完成、校驗完成後,才能呼叫確認匯入介面,否則會報錯。請求頭中Content-Type需要為application/json;charset=UTF-8,傳入有效cookie,保證不會被攔截。
def saveImportPerson():

url = '/ui/person/'

param = ''

user_url = 'http://' + ip + url+param

print(user_url)

data = json.dumps({"flag": 1,"code": code,"orgCode":""})

headers = {'Accept-Encoding': 'gzip, deflate',

'Content-Type': 'application/json;charset=UTF-8',

'Cookie': cookie}

r = requests.post(user_url,data=data,headers=headers)

print(r.text)

  • 結束語

1、檔案校驗是非同步過程,上傳檔案介面返回資料不能保證校驗完成,可以等待若干秒後,確認匯入必須在校驗完成後呼叫。

相關文章