做套网站多少钱聊城正规网站建设公司电话

张小明 2026/1/2 4:33:22
做套网站多少钱,聊城正规网站建设公司电话,如何建设网站安全管理制度,广州网站设计素材在近期的测试中#xff0c;小编又遇到了一些关于grpc接口的测试#xff0c;踩了一些坑#xff0c;也总结了一些经验#xff0c;想与大家分享交流一下。本期我们主要来谈谈有关protobuf中一些特殊数据类型在python中的处理方式。由于目前protobuf3已经成为主流#xff0c;本…在近期的测试中小编又遇到了一些关于grpc接口的测试踩了一些坑也总结了一些经验想与大家分享交流一下。本期我们主要来谈谈有关protobuf中一些特殊数据类型在python中的处理方式。由于目前protobuf3已经成为主流本文将直接以proto3进行探讨。一、标量值类型标量值类型与我们在编程语言使用的基本数据类型概念类似用来携带的数据也大体相同。在python中这些标量值类型都能找到与之对应的python数据类型处理起来简单便捷。使用举例message Student { string name 1; int32 age 2; // true: male, false:female bool sex 3; }Python实现代码name小王 age15 sexTrue #方式1 studentStudent(namename,ageage,sexsex) #方式2 studentStudent() student.namename student.ageage student.sexsex二、一些特殊类型除了上面提到的标量值类型proto3中还定义了其他一些特殊的数据类型方便我们用来构造、传递各种复杂的数据结构。官方给出了一个关于这些类型的JSON映射表可以直观地看到各种类型所含数据的基本结构。这些类型使得我们可以方便地构造出各种各样的数据形式。这其中有几个较为常用的类型在小编进行的测试中经常遇到下面我们就结合实际中的例子来为大家介绍一下。1、messagemessage根据映射表我们可以看到它类似于我们在编程语言中所使用的类的对象object。在一个类中我们可以添加各种其他类型的数据也包括类本身。通过类比message也有类似的概念我们可以在里面添加各种proto类型的数据也包括message。其实正如message的名字一样——消息它是protobuf中的核心类型在grpc接口中我们正是通过发送和接收消息来完成数据交互来实现对应的功能。简单的messagemessage Person { int32 id 1; string name 2; string email 3; }含其他message的messagemessage Point { int32 latitude 1; int32 longitude 2; } message Feature { string name 1; Point location 2; }在Python中的使用locationPoint(latitude5,longitude10) FeatureFeature(name我是个名字,locationlocation)2、Timestamp、Duration这两种类型都是关于时间的Timestamp是时间戳Duration表示的时间长度。在AI平台账号服务的测试中某Account类型的message定义如下locationPoint(latitude5,longitude10) FeatureFeature(name我是个名字,locationlocation)在Python中的使用update_atTimestamp() #从字符串获取 update_at.FromJsonString(1970-01-01T00:00:00Z) #获取当前时间 update_at.GetCurrentTime() time_limitDuration() #从纳秒转换 time_limit.FromNanoseconds(1999999999) #从秒转换 time_limit.FromSeconds(100) accountAccount(account_idaccount1,update_atupdate_at,time_limittime_limit)3、AnyAny类型比较特殊它可以包含不同的message结合pack和unpack只需声明一个Any即可传递各种类型的message而不用声明多个字段。在大会同传项目中某个请求的message中需要传递两种信息——图片和音频于是通过Any类型来实现同一字段的复用message ImageData { string index 1; bytes image 2; } message Data { string appid 1; bytes payload 2; string extra 3; } message Request { google.protobuf.Any body 1; }在Python中的使用imageDatamsg_pb2.ImageData(index001,imageopen(1.jpg,rb).read()) req1msg_pb2.Request() req1.body.Pack(imageData) datamsg_pb2.Data(nameno.1,payloadopen(1.wav,rb).read(),extrano use) reqmsg_pb2.Request() req.body.Pack(data)4、enumenum枚举类型和其他大多数编程语言的枚举类型概念相同主要是通过提前设定好一些固定的值来限定可以传递的内容。在AI平台实名认证服务的测试中需要一个认证人类型的字段由于认证人类型收敛于是使用enum类型来定义enum PersonType { PERSONTYPE_UNSPECIFIED 0; INDIVIDUAL 1; LEGAL 2; AUTHORIZE 3; } message Person { string real_name 1; PersonType person_type 2; }在Python中的应用person_typePersonType.Value(INDIVIDUAL) Person(real_name小王,person_typeperson_type)5、mapmap相当于json中的键值对在Python中类似于字典dict我们可以利用Python的dict类型数据来对map进行设置。map在proto中声明时一般会带有尖括号来指定key和value的具体类型如map就表示键值对的key、value都为string类型。在AI平台鉴权相关的测试中需要为用户创建的应用绑定若干个不同的特殊属性每个特殊属性对应着一个属性值此处采用了map类型message App { string appid 1; mapstring, string extra_informations 2; }在Python中的应用extra_informations{name:app1,expired:no} appApp(appid1234567, extra_informationsextra_informations)6、repeatedrepeated相当于json中的list在Python中类似于列表list我们可以利用Python的list类型数据来对repeated进行设置。在AI平台账号服务的测试中需要为账号添加各种不同的能力每个能力有多个属性而每个能力属性的种类和数据类型一致。此处采用了repeated类型message Audience { string name 1; string tier 2; } message Account { string account_id 1; repeated Audience audience 2; }在Python中的应用audience[{name:ASR,tier:stand},{name:TTS,tier:free},{name:MT,tier:stand}] accountAccount(account_idaccount1,audienceaudience)三、实际应用中的问题与技巧1、repeated类型赋值问题如果把上面所讲repeated类型例子中的Python代码改成如下形式那么在运行时会报错audience[{name:ASR,tier:stand},{name:TTS,tier:free},{name:MT,tier:stand}] accountAccount(account_idaccount1) account.audienceaudience错误信息AttributeError: Assignment not allowed to repeated field name in protocol message object.这与我们上面所说的message的两种赋值方式似乎有所出入但事实是因为protobuf中的repeated类型并不是我们想象的那样与python中的list完全对应因此在这里会出现问题。所以在实际应用中我们应避免这种写法尽量采用上面例子中的方式。另外我们还可以采用另外一种方式来达到同样的效果audience[{name:ASR,tier:stand},{name:TTS,tier:free},{name:MT,tier:stand}] for audience1 in audience: aaccount.audience.add() a.nameaudience1[name] a.tieraudience1[tier]2、复杂message的数据构造问题在实际测试的接口中有时某个message的结构可能会非常复杂比如像语音识别服务一些接口协议里包含很多不同的message和repeated类型这样对于我们编写测试客户端代码以及构造case、解析case都会有一些影响。之前我们介绍过使用命令行的方式传递参数的方式显然难以满足这种情景下的需求手动拼message的方式也显得十分不便。经过一番调研发现对于这种情况我们可以使用protobuf库中json_format里面的Parse、MessageToJson两个方法来有效解决这两个方法可以实现protobuf message和json的互转。因为处理json的方式有很多也很灵活因此我们在构造case时可以使用json的方式通过Parse方法直接将json转换成message。在收到返回结果之后可以使用MessageToJson方法将message转换成json这样对于我们测试人员来说发送和接收的数据看起来都是json无论是准备测试数据还检验结果都会轻松不少。示例from google.protobuf import json_format json_obj{a1:1,a2:2} request json_format.Parse(json_obj,MessageName()) json_result json_format.MessageToJson(request) print (json_result)其中MessageName为message的名称json_result为转为json后的返回结果。小结本文介绍了protobuf数据类型与Python数据类型的一些联系以及构造方法。结合前面两篇所介绍的四种gRPC接口测试请求方法我们就可以构造各种类型的数据、对各种不同的gRPC接口进行测试了。最后作为一位过来人也是希望大家少走一些弯路在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈这些资料希望能给你前进的路上带来帮助。​视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

如何备案成企业网站关闭wordpress用户注册

用 Markdown 记录你的 TensorFlow 实验日志最佳实践 在深度学习项目中,你是否曾遇到过这样的场景:几周前某个实验的准确率明明达到了 89%,但现在无论如何调参都复现不出来?或者团队新人接手项目时,只能靠口头询问“上次…

张小明 2025/12/31 18:58:29 网站建设

wordpress二次元主题个人北海网站优化

一、测试场景构建的范式转移 1.1 传统场景库的局限性 实景采集成本高昂(单城市路采成本>200万) 极端场景覆盖率<0.3%(IIHS 2025数据) 场景参数组合爆炸(100变量交叉影响) 1.2 A…

张小明 2025/12/31 18:57:58 网站建设

淮阳住房和城乡建设局网站桂林北站到阳朔

1、项目包含项目源码、项目文档、数据库脚本、软件工具等资料;带你从零开始部署运行本套系统。2、项目介绍随着社会对精神文明的日益关注,影视产业的发展前景日益看好,影视作品的类型与数目也不断增加。但是随着人数的增加,电影院…

张小明 2025/12/31 18:56:53 网站建设

黑龙江住房城乡建设厅网站深圳宝安区是市中心吗

第一章:Open-AutoGLM Prompt改造的核心理念在构建高效、可扩展的自动化生成系统时,Open-AutoGLM 的 Prompt 改造机制引入了一套以语义对齐与任务解耦为核心的设计哲学。该理念强调通过结构化提示工程提升大语言模型在复杂场景下的推理一致性与执行准确性…

张小明 2025/12/31 18:55:17 网站建设

零基础学网站建设 知乎wordpress多功能模板

一、为什么选择网络安全?网络安全行业正处于黄金发展期,2025年人才缺口达200万,平均薪资区间6k-15k,工作2年后可达8k,5年经验突破12k。无论是想转行还是提升技能,网络安全都是值得投入的优质赛道。二、新手…

张小明 2025/12/31 18:54:45 网站建设