模拟在页面点击导入csv

news/发布时间2024/5/3 20:32:36
  • 案例背景

组件性能测试过程中,要导入大量自定义的数据。

  • 案例分析

本案例中采用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、文件校验是异步过程,上传文件接口返回数据不能保证校验完成,可以等待若干秒后,确认导入必须在校验完成后调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/74602617.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

利用MLIR实现矩阵乘法的高性能GPU码生成:一些早期结果

利用MLIR实现矩阵乘法的高性能GPU码生成:一些早期结果 介绍了使用MLIR编译器基础设施在NVIDIA GPU上针对张量核生成代码的一些早期结果。当今高性能深度学习的最先进技术主要是由高度调优的库驱动的。这些库通常是由专业程序员手工优化与调优的,他们使用低级抽象,付出了巨大…

图文并茂手把手教你MAC运行.net项目(Visual Studio 配置c# .net环境 运行solution)

下载Visual Studio 点击这里直达官网安装Visual Studio开启项目(如果你有现成的项目) 如果没有现成的项目,可以参考下一个步骤进行测试哦 选择.sln点击键盘F5,启动项目 观察Application Output, 项目启动成功结语今天就写到这里啦~ 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ…

重生之我在男航学Java-1

一、前言第一次题目集主要是让我们熟悉对类的使用和对单一职责的理解,由于给出了设计建议,并且内部给出了具体的设计分析,第一次PTA的题量大但是难度并不是很大,虽然老师说了可以使用正则表达式,但我由于自身的懒惰附加c语言面向过程的思想根深蒂固,我在第一次PTA中并未使…

python 爬虫

python 爬虫 1.开发工具 pycharm: https://pan.baidu.com/s/1s_bkgDT0QxNTQY07LnQRWQ?pwd=2dlb提取码:2dlb python3 VSCode 2.第一个爬虫的开发from urllib.request import urlopenurl = "http://www.baidu.com"resp = urlopen(url) #print(resp.read().decode(&q…

项目冲刺

项目冲刺汇总 第一天 第二天 会议图片第三天 会议图片第四天 会议图片第五天 会议图片第六天 会议图片第七天 会议图片燃尽图