当前位置: 首页 > news >正文

网站建设需要服务器么品牌故事

网站建设需要服务器么,品牌故事,免费招聘人才网站,个人网站设计与制作源代码为什么UI自动化维护成本更高#xff1f;因为前端页面变化太快#xff0c;而且UI自动化比较耗时(比如等待页面元素的加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间)为什么接口自动化维护成本较低#xff1f;因为接口较稳定#xff0c;接口的响应时间… 为什么UI自动化维护成本更高因为前端页面变化太快而且UI自动化比较耗时(比如等待页面元素的加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间)为什么接口自动化维护成本较低因为接口较稳定接口的响应时间基本上都是秒级、毫 (1)接口自动化测试的意义、前后端分离思想接口自动化测试的优缺点优点测试复用性。维护成本相对UI自动化低一些。为什么UI自动化维护成本更高 因为前端页面变化太快而且UI自动化比较耗时(比如等待页面元素的加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间)为什么接口自动化维护成本较低 因为接口较稳定接口的响应时间基本上都是秒级、毫秒级别的速度快并且接口自动化本身也可以做一些有关联的操作、全流程的操作(比如注册 -- 登录 -- 修改个人信息)。 回归方便。可以运行更多更繁琐的测试。自动化的一个明显的好处是可以在较少的时间内运行更多的测试。优点1、优点3、优点4是接口自动化和UI自动化公有的优点。 缺点不能完全取代手工测试。(自动化永远不能替代手工测试只是提高测试效率)手工测试比自动化测试发现的缺陷更多自动化测试不容易发现新的BUG。GET请求和POST请求的区别GET请求一般是从后台服务器上获取数据用于前端页面的展示(例如看到列表页面等)POST请求是向服务器传送数据(登录、注册、上传文件、发布文章)。什么时候用GET什么时候用POST取决于开发。无论用POST请求还是GET请求都能完成对数据的增删改查分不同的请求方式更多的是一种约定。GET请求的请求参数是拼接在url后面的只能以文本的形式传递参数请求参数会显示在地址栏数据长度受限于url的长度传递的数据量小(4KB左右不同浏览器会有差异)POST请求的请求参数是放在request body里面传递数据量大(默认8M)对数据长度也没有要求。GET请求可以在浏览器中直接访问而POST请求只能借助工具完成(比如postman、jmeter)。GET请求速度快安全性不高POST请求一般用于像登录这种安全性要求高的场合请求不会被缓存也不会保留在浏览器的历史记录中。以前get 查询post 新增put 编辑delete 删除 现在get 查询post 新增 编辑 删除 或者纯post走天下 前后端分离开发模式以前老的方式产品经理 / 领导 / 客户提出需求(提出文字需求)UI做出设计图前端工程师做html页面(用户能看到的页面)后端工程师将html页面套成jsp页面(前后端强依赖后端必须要等到前端的html页面做好才能套jsp。如果html发生变更就很麻烦开发效率低)比如云商系统集成出现问题前端返工后端返工二次集成集成成功交付新的方式产品经理 / 领导 / 客户提出需求(提出文字需求)UI做出设计图前后端约定接口 数据 参数前后端并行开发(无强依赖可前后端并行开发如果需求变更只要接口 参数不变就不用两边都修改代码开发效率高)前后端集成前端页面调整集成成功交付??通过F12打开浏览器开发者工具进行抓包返回数据是json格式的就是前后端分离返回时html页面就是没有前后端分离。微服务的概念将大模块切分成小模块。减少代码的耦合度从而降低模块与模块之间的影响。原先是一个jar包里面包含所有模块改一个模块就有可能影响其他模块现在是将一个一个的模块都打成一个一个的jar包模块与模块之间的交互通过接口哪个模块出了问题只需要修改那个模块的jar包避免因为修改一个模块的代码导致其他模块出错。(2)Python requests框架讲解接口自动化requests环境搭建接口自动化核心库requests安装requests库的方法方法一命令行安装打开cmd或者终端输入以下命令pip install requests -i 方法二在pycharm中安装settings -- Project -- Project Interpreter -- 点击“”号 -- 输入request安装测试环境是否ok# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/7 21:48import requestsurl_toutiao # 方式一 # result_toutiao (url_toutiao)# 方式二 result_toutiao (urlurl_toutiao)# 方式三 # result_toutiao ( # )# print(()) # print(type(())) # class dict result () print(result) expect_result 华晨金杯汽车花朵朵 actual_result result[data][0][comment][user_name] print(actual_result) if expect_result actual_result:print(pass!) else:print(failed!) 响应超时timeoutimport requests# V部落http://182.92.178.83:8081/index.html # 文章列表 url_v_article v_headers {Cookie: studentUserNamectt01; Hm_lvt_cd8218cd51f800ed2b73e5751cb3f4f91609742724,1609762306,1609841170,1609860946; adminUserNameadmin; JSESSIONID9D1FF19F333C5E25DBA60769E9F5248E} article_params {state: 1, # -1全部文章 1已发表 0回收站 2草稿箱page: 1, # 显示第1页count: 6, # 每页显示6条keywords: # 包含的关键字} keywords [大橘猫, 跑男, 牙] for keyword in keywords:article_params[keywords] keyword# headers和params是不定长的根据定义的字典传参# timeout超时单位为秒# 通过设置超时时间告诉requests在经过多久后停止等待响应result (url_v_article, headersv_headers, paramsarticle_params, timeout30)print(()) JSON、URL、text、encoding、status_code、encoding、cookiesprint(()) # 响应结果以json的形式打印输出 print() # 打印url地址 print() # 以文本格式打印服务器响应的内容 print() # 响应状态码 print() # 编码格式 print() # cookie JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写同时也易于机器解析和生成并有效地提升网络传输效率。JSON格式在Python里面相当于字典类型。JSON格式化http://www.bejson.com/jsonviewernew/url在线编码转换(3)get、post、put、delete请求方式的自动化实现GET请求方式# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/7 21:48import requestsurl_toutiao # 方式一 # result_toutiao (url_toutiao)# 方式二 result_toutiao (urlurl_toutiao)# 方式三 # result_toutiao ( # )# print(()) # print(type(())) # class dict result () print(result) expect_result 华晨金杯汽车花朵朵 actual_result result[data][0][comment][user_name] print(actual_result) if expect_result actual_result:print(pass!) else:print(failed!)运行结果 {message: success, err_no: 0, data: [{comment: {id: 6914864825282215951, id_str: 6914864825282215951, text: 藁城出国打工的人很多重点检查藁城区, content_rich_span: {links:[]}, user_id: 940799526971408, user_name: 华晨金杯汽车花朵朵,}, post_count: 0, stick_toast: 1, stable: True} 华晨金杯汽车花朵朵 pass! POST请求方式# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/9 22:51import requestsurl_v_login # 定义参数字典格式 payload {username: sang, password: 123} # Content-Type: application/json -- json # Content-Type: application/x-www-form-urlencoded -- data result (url_v_login, datapayload) # 将返回结果转为json格式 result_json () print(result_json) # {status: success, msg: 登录成功} # 获取RequestsCookieJar result_cookie print(result_cookie, type(result_cookie)) # RequestsCookieJar # 将RequestsCookieJar转化为字典格式 result_cookie_dic (result_cookie) print(result_cookie_dic) # {JSESSIONID: D042C5FE4CFF337806D545B0001E7197} # 获取SESSION final_cookie JSESSIONID result_cookie_dic[JSESSIONID] # SJSESSIONIDD042C5FE4CFF337806D545B0001E7197 print(final_cookie) PUT请求方式# V部落_编辑栏目# 定义请求头自动获取cookie的方法详情请看下文 headers {Cookie: VBlog().get_cookie()} new_now_time (%Y%m%d%H%M%S, (())) new_category_name 更新栏目 new_now_time payload {id: 2010, cateName: new_category_name} .put(, headersheaders, datapayload) DELETE请求方式# 删除栏目 result .delete( “2010”, headersheaders) print(()) # {status: success, msg: 删除成功!} (删除成功!, ()[msg]) (4)接口自动化测试过程中cookie的处理手动传入cookie的值(每次通过浏览器F12抓包然后复制request header里面的cookie)# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/7 22:25import requests# V部落查询栏目 url_v_category all # 定制请求头 # 如果你想为请求添加HTTP头部只要简单地传递一个字典给headers参数就可以了 v_headers {cookie: studentUserNamectt01; Hm_lvt_cd8218cd51f800ed2b73e5751cb3f4f91609742724,1609762306,1609841170,1609860946; adminUserNameadmin; JSESSIONID9D1FF19F333C5E25DBA60769E9F5248E} result (url_v_category, headersv_headers) # 打印json格式的响应结果 print(()) cookie自动获取# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/9 22:51import requestsurl_v_login # 定义参数字典格式 payload {username: sang, password: 123} # Content-Type: application/json -- json # Content-Type: application/x-www-form-urlencoded -- data result (url_v_login, datapayload) # 将返回结果转为json格式 result_json () print(result_json) # {status: success, msg: 登录成功} # 获取RequestsCookieJar result_cookie print(result_cookie, type(result_cookie)) # RequestsCookieJar # 将RequestsCookieJar转化为字典格式 result_cookie_dic (result_cookie) print(result_cookie_dic) # {JSESSIONID: D042C5FE4CFF337806D545B0001E7197} # 获取SESSION final_cookie JSESSIONID result_cookie_dic[JSESSIONID] # SJSESSIONIDD042C5FE4CFF337806D545B0001E7197 print(final_cookie) 批量获取cookie脚本# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/9 23:26import requestsdef get_cookie(username, password):通过考试系统学生登录获取单个cookieurl_login payload {userName: username, password: password, remember: False}result (url_login, jsonpayload)# result_json ()# print(result_json)# 获取RequestsCookieJarresult_cookie # print(result_cookie, type(result_cookie)) # RequestsCookieJar# 将RequestsCookieJar转化为字典格式result_cookie_dic (result_cookie)# print(result_cookie_dic) # {SESSION: YzFkM2IzN2QtZWY1OC00Nzc4LTgyOWYtNjg5OGRiZDZlM2E4}# 获取SESSIONfinal_cookie SESSION result_cookie_dic[SESSION] # SESSIONMzc2...return final_cookie # -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/9 23:23from test01.demo04_student_login import get_cookie import osdef get_batch_cookies():批量获取cookie# 获取cookie之前先将文件内容清空# with open(rD:\Desktop\Testman_Study\API_auto\file\, w) as cookies_info:# ()# 或者将文件删除(rD:\Desktop\Testman_Study\API_auto\file\)# 读取csv文件with open(rD:\Desktop\Testman_Study\API_auto\file\, r) as user_info:for user in user_info:user_list ().split(,)# 调用获取单个cookies的方法传入注册好的用户名和密码cookies get_cookie(user_list[0], user_list[1])# 将cookie追加写入文件with open(rD:\Desktop\Testman_Study\API_auto\file\, a) as cookies_info:(cookies \n)# 调用方法 get_batch_cookies() (前提是这些账号和密码都是已经注册过的可以直接登录)poopoo001,123456,1 poopoo002,123457,2 poopoo003,123458,3 poopoo004,123459,4 ...... SESSIONZmE3YmU4ZDctNDExZS00MDdhLWE0YjEtMjAyZjQxOTMxYmUx SESSIONYjdkNTZhNTUtNGFmMi00MjVkLWEyNjctOTNiMmRmOTY1YTdm SESSIONZTJmMTYzMWEtZjUzOS00NTlhLWI0OWQtMzBmN2RkYmU4YmRi SESSIONYTM0ZGRhOTctZjk5Ni00OWZhLTg1YTItZjUyMTMwZGE2MjVi ...... (5)不同类型请求参数的处理# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/7 22:25import requests# 文章列表 url_v_article v_headers {Cookie: studentUserNamectt01; Hm_lvt_cd8218cd51f800ed2b73e5751cb3f4f91609742724,1609762306,1609841170,1609860946; adminUserNameadmin; JSESSIONID9D1FF19F333C5E25DBA60769E9F5248E}# 自定义url参数定义一个字典将参数拆分再将字典传递给params变量即可 article_params {state: 1, # -1全部文章 1已发表 0回收站 2草稿箱page: 1, # 显示第1页count: 6, # 每页显示6条keywords: # 包含的关键字} keywords [大橘猫, 跑男, 牙] for keyword in keywords:article_params[keywords] keyword# headers和params是不定长的根据定义的字典传参result (url_v_article, headersv_headers, paramsarticle_params)print(()) (6)结合PythonRequestsUnittest框架做接口自动化测试unittest框架结构代码地址https://github.com/itcaituotuo/unittest_apiif _name_ __main__:if __name__ __main__的意思是当.py文件被直接运行时if __name__ __main__下的代码块将被运行当.py文件以模块形式被导入时if __name__ __main__下的代码块不被运行。(7)接口自动化测试过程中高级断言闭环断言(新增 -- 查询 -- 修改 -- 查询 -- 删除 --查询) def test_article(self):# ①V部落_新增文章now_time (%Y%m%d%H%M%S, (()))title 蔡坨坨 now_timepayload {id: -1, title: title, mdContent: 文章内容, state: 1, htmlContent: p文章内容/p,dynamicTags: , cid: 62}headers {Cookie: VBlog().get_cookie()}result self.(, headersheaders, datapayload)# ②查询文章url_v_article article_params {state: 1, # -1全部文章 1已发表 0回收站 2草稿箱page: 1, # 显示第1页count: 6, # 每页显示6条keywords: title # 包含的关键字title}result (url_v_article, headersheaders, paramsarticle_params, timeout30)print(()) # 响应结果以json的形式打印输出ls ()[articles]act 123# 查到新增的文章说明新增成功for l in range(0, len(ls)):if ls[l][title] title:act okarticle_id ls[l][id](ok, act)# ③编辑文章now_time (%Y%m%d%H%M%S, (()))title 修改文章 now_timepayload {id: article_id, title: title, mdContent: 修改内容, state: 1, htmlContent: p修改内容/p,dynamicTags: , cid: 62}headers {Cookie: VBlog().get_cookie()}self.(, headersheaders, datapayload)# 编辑完查询文章url_v_article article_params {state: 1, # -1全部文章 1已发表 0回收站 2草稿箱page: 1, # 显示第1页count: 6, # 每页显示6条keywords: title # 包含的关键字title}result (url_v_article, headersheaders, paramsarticle_params, timeout30)print(()) # 响应结果以json的形式打印输出ls ()[articles]act 123# 查到修改过的文章说明编辑成功for l in range(0, len(ls)):if ls[l][title] title:act okarticle_id ls[l][id](ok, act)# ④查看文章详情article_id str(article_id)result self.( article_id, headersheaders)print(())if ()[title] title:act ok(act, ok)# ⑤删除文章payload {aids: article_id, state: 1}result .put(dustbin, headersheaders, datapayload)print(())act ()[msg](act, 删除成功!) (8)通过生成可视化HTML测试报告百度网盘链接链接提取码p20c# -*- coding:utf-8 -*- # 作者IT小学生蔡坨坨 # 时间2021/1/10 13:45from reports import HTMLTestRunner from case.exam_case.teacher_case import TeacherCase import unittest import os import time# 创建测试套件 suite ()# 添加测试用例根据添加顺序执行 # 添加单个测试用例 # (TeacherCase(test_001_admin_login))# 添加多个测试用例 s([TeacherCase(test_001_admin_login),TeacherCase(test_002_insert_paper),TeacherCase(test_003_select_paper),])# 定义测试报告的存放的路径 path rD:\Desktop\Testman_Study\unittest_exam_system\reports # 判断路径是否存在 if not os.path.exists(path):# 如果不存在则创建一个(path) else:pass # 定义一个时间戳用于测试报告命名 now_time (%Y-%m-%d-%H-%M-%S, (())) reports_path path \\ now_time (exam_report).html reports_title u考试系统V部落——测试报告 desc u考试系统V部落——接口自动化测试报告 # 二进制写 fp open(reports_path, wb) runner (streamfp, titlereports_title, descriptiondesc) # 运行 (suite) postman、JMeter、requests总结postman接口功能测试JMeter接口性能测试requests接口自动化??三个的共同特点都能完成接口功能测试。以上信息来源于网络如有侵权请联系站长删除。TAG接口测试
http://wiki.neutronadmin.com/news/209167/

相关文章:

  • 文字头像在线制作免费生成seo网络营销的技术
  • 禅城南庄网站制作免费提升学历
  • 杭州网站建设费用多少钱免费的个人简历模板excel
  • 网站正在建设中 英文郑州专业做网站企业
  • 编程就是做网站吗网页升级访问永久
  • 建立商城网站100种创意活动策划
  • 建平县营商环境建设局网站静态网站开发
  • 东莞专业做淘宝网站建设设计素材网站排行
  • 做百度推广需要网站吗岱山县网站建设
  • 校园网的网站建设内容建设校园网站的必要性
  • 网站镜像代理怎么做安康市代驾公司
  • 建筑工程论坛网赣州seo培训
  • 企业网站带手机源码wordpress站群+优化
  • 关系的网站营销软文范文
  • 重庆网上房地产网站长工具seo诊断
  • 网站套利怎么做网络广告营销的典型案例
  • 高校网站建设规范免费科技软件
  • 动态背景设置网站wap浏览器
  • 无锡哪家公司做网站网站搭建手机
  • 在线手机网站建设dw网页制作教程视频简单第三期
  • 白城网站开发网站设计网站建站
  • 江西省建设部网站无锡新区企业网站推广
  • 工程建设标准下载网站建应用网站
  • 专门做音乐的网站wordpress怎么装模板
  • 网站设计)七牛云存储wordpress插件
  • 重庆有专业做网站的吗用什么服务器做盗版小说网站吗
  • 山东省建设厅网站地址上海app软件开发
  • php网站服务器怎么来用KEGG网站做通路富集分析
  • 做什网站好柳州市城乡建设局网站
  • 如何做资源论坛网站公司网站主页设计