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

哪些网站结构是不合理的农业信息中心网站建设

哪些网站结构是不合理的,农业信息中心网站建设,抖音餐厅代运营方案,做中英文网站的目录 一、代码实现自动化理论及流程 二、脚本实现的理论和准备工作 1、抽取功能转为自动化用例 2、搭建环境(测试工具) 3、搭建目录结构 三、登录接口脚本实现 1、代码编写 1️⃣api目录 2️⃣script目录 2、断言 3、参数化 1️⃣编写数据存储文件#xff1a;jso…目录 一、代码实现自动化理论及流程 二、脚本实现的理论和准备工作 1、抽取功能转为自动化用例 2、搭建环境(测试工具) 3、搭建目录结构 三、登录接口脚本实现  1、代码编写 1️⃣api目录 2️⃣script目录 2、断言 3、参数化 1️⃣编写数据存储文件json文件 2️⃣编写读取数据工具read_json() 3️⃣参数化引用parameterize 一、代码实现自动化理论及流程 代码编写脚本和工具实现脚本区别是什么 代码 优点代码灵活方便缺点学习成本高工具 优点易上手缺点灵活度低有局限性。总结 功能脚本工具自动化脚本代码 代码接口自动化怎么做的 第一步概述pythonrequestunittest 第二步具体描述封装、调用、数据驱动、日志、报告第三步举例api\scripts\data\log\report\until\... 二、脚本实现的理论和准备工作 使用代码编写自动化脚本的流程 1、抽取功能用例转为自动化⽤例。2、搭建环境测试工具相关的3、搭建目录结构4、编写脚本5、执行脚本6、配置持续集成 1、抽取功能转为自动化用例 去掉了有bug的用例、以及“请求后台投资响应失败密码为空”的用例改用例需要借钱和投资双方私下协商密码 2、搭建环境(测试工具) ①python、pycharm、requests、pymysql、parametrize ②jenkins、jdk 提示由于编写的自动化脚本而自动化脚本编写之前功能已测试完毕所以不需要在单独搭建项目环境。 3、搭建目录结构 三、登录接口脚本实现  1、代码编写 1️⃣api目录 把需要测的接口放在该目录 用到五个url所以是5个接口也需要在注册登录模块写五个方法 url设置成私有变量只能在该类内部调用。 此处这样做只是因为url实际上只会在该登陆注册模块内部使用外面没必须用到设置私有外部调用方法的时候。看着干净 from config import HOSTclass ApiRegisterLogin:# 有几个接口就封装几个方法#初始化def __init__(self, session):# 获取session对象self.session session# 图片url# 图片验证码urlself.__url_img_code HOST /common/public/verifycode1/{}# 短信验证码urlself.__url_phone_code HOST /member/public/sendSms# 注册Lr1self.__url_register HOST /member/public/reg# 登录urlself.__url_login HOST /member/public/login# 登录状态urlself.__url_login_status HOST /member/public/islogin# url# 1、获取图⽚验证码接⼝ 封装def api_img_code(self,random):return self.session.get(urlself.__url_img_code.format(random))# 2、获取短信验证码接⼝ 封装def api_phone_code(self,phone,imgVerifyCode):data {phone: phone,imgVerifyCode: imgVerifyCode,type: reg}return self.session.post(urlself.__url_phone_code,datadata)# 3、注册接⼝ 封装def api_register(self,phone,password,verifycode,phone_code):data {phone: phone,password: password,verifycode: verifycode,phone_code: phone_code,dy_server: on,invite_phone: }return self.session.post(urlself.__url_register,datadata)# 4、登录接⼝ 封装def api_login(self,keywords,password):data {keywords: keywords,password: password}return self.session.post(urlself.__url_login, datadata)# 5、查询登录状态接⼝ 封装def api_login_status(self):return self.session.post(urlself.__url_login_status) 2️⃣script目录 调用封装的接口开展测试工作 下面测试用例的内容目前只是测试一下api文件中封装的接口能不能用后面还要改。 import unittestimport requestsfrom api.api_register_login import ApiRegisterLoginclass TestRegisterLogin(unittest.TestCase):# 初始化def setUp(self) - None:# 获取session对象self.session requests.Session()# 获取ApiRegisterLogin实例self.reg ApiRegisterLogin(self.session)# 结束def tearDown(self) - None:# 关闭session对象self.session.close()#1、获取图片验证码接口 测试def test01_img_code(self):# 调用图片验证码接口r self.reg.api_img_code(234)# 查看响应状态码print(r.status_code)#2、获取短信验证码接口 测试def test02_phone_code(self,phone17612341111,imgVerifyCode8888):# 1、调用获取图片验证码接口 -- 目的:让session对象记录cookie# 调用接口后session会自动记录cookieself.reg.api_img_code(234)# 2、调用短信验证码接口r self.reg.api_phone_code(phonephone,imgVerifyCodeimgVerifyCode)# 3、查看响应结果print(r.json())#3、注册接口 测试def test03_register(self,phone17612341111,imgVerifyCode8888,passwordwin56,phone_code666666):# 1、图片验证码接口self.reg.api_img_code(234)# 2、短信验证码接口self.reg.api_phone_code(phonephone, imgVerifyCodeimgVerifyCode)# 3、注册接口r self.reg.api_register(phonephone,passwordpassword,verifycodeimgVerifyCode,phone_codephone_code)# 4、查看结果print(r.json())#4、登录接口 测试def test04_login(self,keywords17612341111,passwordwin56):# 1、调用登录r self.reg.api_login(keywordskeywords,passwordpassword)# 2、查看结果print(r.json())#5、查询登录状态接口 测试def test05_login_status(self):# 调用登录擦口self.reg.api_login(keywords17612341111, passwordwin56)# 调用查询登录状态接口r self.reg.api_login_status()# 看结果print(r.json()) 2、断言 说明判断程序执⾏实际结果是否符合预期结果 示例 实际需要将api_register_login.py中的每个测试用例都做异常处理下面只是以查询登录接口中的异常捕获为例。 中的完整代码后续补充。 try:# 调⽤登录接⼝self.reg.api_login(keywords13600001111, passwordtest123)# 调⽤查询登录状态接⼝r self.reg.api_login_status()# 看结果self.assertIn(expect_text, r.text) except Exception as e:# ⽇志print(e)# 抛异常raise # 提示捕获异常的⽬的是为了将错误信息记录下来捕获信息完成后必须抛出异常 【提示】捕获异常的目的是为了将错误信息记录下来捕获信息完成后必须抛出异常  3、参数化 步骤 1、编写数据存储⽂件 json2、编写读取⼯具⽅法 read_json()3、使⽤参数化组件进⾏引⽤ parametrize 1️⃣编写数据存储文件json文件 心得 1、根据模块来新建json文件1个模块1个json⽂件 2、最外侧使用{}模块下几个接口编写几个key值为列表 3、列表值中有几组数据就写几个{} 4、每组数据{}中组成格式说明参数预期结果 {img_code: [{desc: 获取图片验证码成功随机小数,random: 0.123,expect_code: 200},{desc: 获取图片验证码成功随机整数,random: 123,expect_code: 200},{desc: 获取图片验证码失败随机数为空,random: ,expect_code: 404},{desc: 获取图片验证码失败随机数为字符串,random: 123hello,expect_code: 400}],phone_code: [{desc: 获取短信验证码成功,phone: 13600001111,imgVerifyCode: 8888,expect_text: 发送成功},{desc: 获取短信验证码成功,phone: 13600001111,imgVerifyCode: 8889,expect_text: 验证码错误}],register: [{desc: 注册成功必填参数,phone: 13600001111,password: test123,verifycode: 8888,phone_code: 666666,expect_text: 注册成功},{desc: 注册失败图片验证码错误,phone: 13600001112,password: test123,verifycode: 8889,phone_code: 666666,expect_text: 验证码错误},{desc: 注册失败短信验证码错误,phone: 13600001112,password: test123,verifycode: 8888,phone_code: 666667,expect_text: 验证码错误},{desc: 注册失败手机号已存在,phone: 13600001111,password: test123,verifycode: 8888,phone_code: 666666,expect_text: 已存在}],login: [{desc: 登录成功,keywords: 13600001111,password: test123,expect_text: 登录成功},{desc: 登录失败密码为空,keywords: 13600001111,password: ,expect_text: 不能为空},{desc: 登录失败解锁,keywords: 13600001111,password: error123,expect_text: 登录成功}],login_status: [{desc: 查询登录状态已登录,status: 已登录,expect_text: OK},{desc: 查询登录状态已登录,status: 未登录,expect_text: 未登}] } 2️⃣编写读取数据工具read_json() import json import osfrom config import DIR_PATHdef read_json(filename,key):# 拼接读取文件的完整路径# os.sep是动态获取/ \filepath DIR_PATH os.sep data os.sep filenamearr []with open(filepath,r,encodingutf-8) as f:for data in json.load(f).get(key):arr.append(list(data.values())[1:])return arrif __name__ __main__:# 测试一下能不能读取到数据print(read_json(register_login.json,img_code)) # 读取的数据为[[0.123, 200], [123, 200], [, 404], [123hello, 400]] 3️⃣参数化引用parameterize 难点1错误次数锁定 难点2: 查询登录状态不同结果。 【注意】由于parameterized的自身bug运行测试用例必须是点击到测试用例所在的类名右键运行。如果想单独运行某个接口用例则把其他接口代码先注释掉。 import unittest from time import sleepimport requestsfrom api.api_register_login import ApiRegisterLoginfrom parameterized import parameterizedfrom util import read_jsonclass TestRegisterLogin(unittest.TestCase):# 初始化def setUp(self) - None:# 获取session对象self.session requests.Session()# 获取ApiRegisterLogin实例self.reg ApiRegisterLogin(self.session)# 结束def tearDown(self) - None:# 关闭session对象self.session.close()#1、获取图片验证码接口 测试parameterized.expand(read_json(register_login.json,img_code))def test01_img_code(self,random,expect_code):try:# 调用图片验证码接口r self.reg.api_img_code(random)# 查看响应状态码# print(r.status_code)self.assertEqual(expect_code,r.status_code)except Exception as err:# 日志print(err)# 抛异常raise#2、获取短信验证码接口 测试parameterized.expand(read_json(register_login.json, phone_code))def test02_phone_code(self,phone,imgVerifyCode,expec_text):try:# 1、调用获取图片验证码接口 -- 目的:让session对象记录cookie# 调用接口后session会自动记录cookieself.reg.api_img_code(234)# 2、调用短信验证码接口r self.reg.api_phone_code(phonephone,imgVerifyCodeimgVerifyCode)# 3、查看响应结果# print(r.json())self.assertIn(expec_text,r.text) # 使用text提取结果是更方便json还要根据键找值except Exception as err:# 日志print(err)# 抛异常raise#3、注册接口 测试parameterized.expand(read_json(register_login.json, register))def test03_register(self,phone,password,imgVerifyCode,phone_code,expec_text):try:# 1、图片验证码接口self.reg.api_img_code(234)# 2、短信验证码接口self.reg.api_phone_code(phonephone, imgVerifyCodeimgVerifyCode)# 3、注册接口r self.reg.api_register(phonephone,passwordpassword,verifycodeimgVerifyCode,phone_codephone_code)# 4、查看结果# print(r.json())self.assertIn(expec_text,r.text)except Exception as err:# 日志print(err)# 抛异常raise#4、登录接口 测试parameterized.expand(read_json(register_login.json, login))def test04_login(self,keywords,password,expec_text):try:i 0r Noneif error in password:while i 3:rself.reg.api_login(keywords,password)i1# 锁定断言print(账号密码输错3次账号锁定,r.text)self.assertIn(锁定,r.text)# 暂停60秒sleep(60)r self.reg.api_login(keywords17612341111, passwordwin56)self.assertIn(expec_text,r.text)else:# 1、调用登录r self.reg.api_login(keywords,password)# 2、查看结果# print(r.json())self.assertIn(expec_text, r.text)except Exception as err:# 日志print(err)# 抛异常raise#5、查询登录状态接口 测试parameterized.expand(read_json(register_login.json, login_status))def test05_login_status(self,status,expec_text):try:if status 已登录:# 调用登录擦口self.reg.api_login(keywords17612341111, passwordwin56)# 调用查询登录状态接口r self.reg.api_login_status()# 看结果# print(r.json())self.assertIn(expec_text, r.text)except Exception as err:# 日志print(err)# 抛异常raise 【总结】目前为止已经写的文件文件内容上面均给出了代码
http://www.dnsts.com.cn/news/184624.html

相关文章:

  • 微企点做的网站百度搜得到吗长沙seo优化排名推广
  • 电子商业网站建设步骤可以自己设计logo的软件
  • 龙岩网站建设极速建站推广整合营销
  • 备案网站名称大全网站什么时候做负载均衡
  • 北京网站托管的公司新国际网站建设
  • 美食网站建设的重要性北京盛赛车网站开发
  • 做产品的往这看:国外工业设计网站大全!icann 域名注册网站
  • 太仓网站设计早晨设计网站制作 万网
  • 医生做网站不违法类似站酷的网站建站
  • seo刷网站网站建设使用情况
  • 朝阳免费网站制作哈尔滨市哪里做淘宝网站
  • 怎么查询网站开发时间免费找工程项目承包软件
  • 做网站h5重庆网站制作技术
  • 英文网站导航 源码建设门户网站
  • 视频网站顶部效果怎么做的深圳福田最新消息今天
  • 苏州市建设局安监站网站资兴市网站建设专业
  • 台州优化网站建设网站计划ppt模板
  • 做网站的你选题的缘由是什么公司简介100字范文
  • 电子商务网站建设个人总结国内外网站
  • 沧州建网站wordpress万能密码
  • 网站域名过户查询做炫舞情侣头像动态图网站
  • 东莞做微网站建设价格wordpress英文文章格式
  • 网站开发概要设计书模板新闻列表做的最好的网站
  • 秦皇岛建设工程信息网站弥勒市建设局网站
  • 外贸网站开发网站诊断内容
  • 设计网站都有哪些济南百度竞价代运营
  • 怎么做网站规划网站建设及推广优化
  • 简易的在线数据库网站模板下载联合网站设计
  • 企业网站seo点击软件宜兴做网站的联系方式
  • 移动端app开发合肥seo软件