• 14
  • 14
分享
  • 从青铜到王者,小白也能写出高级代码!——软件测试圈
  • 曼倩诙谐 2021-07-16 10:26:36 字数 2196 阅读 1725 收藏 14

  摘要:写代码就像建房子,一砖一瓦大家都知道,难点是在你如何盖的更高级。对于写代码来说,基础语法无非就那几个,很多人都会,关键是如何将代码写得健壮、写得条理清楚。

  在学习自动化开发语言过程中,很多人都会有一种感觉,就是自己好像什么都会一些,但是会的都是基础知识点,还不够”深“、不够高级,面试时不敢大胆的说:“我会!我懂!”

  特别是看别人写好的代码时发现,有好多个文件、方法,调来调去的、跳来跳去的,贼崇拜,大佬!大神级别的存在呀!

  但是看看自己只会写单个接口、单个方法,看起来很low,完全没自信出去面试,也不敢开高薪。

  最近自己发表了一个文章,就是把自己学过的知识点由一锅大骨汤,浓缩成了一碗浓汤后发表出去的,居然有人评论说:“大佬,我跟你混了!大佬,求带带!”

  瞬间觉得自己得到了精神上的升华,自信了不少。今天简单给大家分享下自己是如何把接口自动化的代码写得更高级。

  想要让代码看起来更加高级一点,无非离不开以下几个地方:

  ·以模块或业务对用例进行同类划分,分为不同的py文件;

  ·相同的函数方法直接封装成模板template,以便其他方法调用;

  ·基础配置管理;

  ·测试数据管理;

  ·……

  本文主要以python+yaml来实现接口自动化,展示如何将基础代码优化成规范化看起来高级的代码。

  目录设计

  ·API:主要用户存放接口请求模板

  ·SETTINGS:主要用于存放yml文件和对应的读取方法

  ·TESTCASES:主要用于存放用例,可根据业务或模板再细分不同的文件夹来管理对应模块或业务的用例

1-1.png

  接口文档

  本文展示五个接口:

  ·获取验证码(get):入参需要环境、手机号

  ·登录app(post):入参需要环境、手机号、验证码、身份信息uuid

  ·创建订单(post):入参需要环境、手机号、身份信息uuid

  ·关联销售顾问(post):入参需要

  ·取消订单(post):入参需要订单号、取消原因、取消来源

  代码设计-青铜级别

  以登录模块的接口为例,进行代码优化升级。

  1. 完成登录需要两个步骤:

  a) 获取短信验证码;

  b) 通过手机号+短信验证码进行登录。

  2. 未优化前代码分为3部分:变量、获取短信验证码函数、登录函数,如下图:

1-2.png

  通过上面代码图可以看出可优化的地方如下:

  1. 不同函数内有相同的代码片段;

  2. 环境变量配置数据未独立开,用户需要修改下单环境或下单用户手机号时,需要打开每个代码文件进行修改。

1-3.png

  代码设计-黄金级别

  设计思路

  ·YAML-通过yaml文件管理环境和手机号变量

  ·将接口请求的公共基础数据单独为一个函数方法

  ·将接口请求按照post和get请求分类,定义为2个请求模板

  代码目录

1-4.png

  基础配置

  前提:

  通过pip安装yaml:pip install PyYAML。

  SETTINGS文件夹主要存放yaml配置文件和读取yaml文件内容的方法,目录如下:

1-5.png

  1. BASE_SETTINGS.YML

  Yaml配置脚本内容:

1-6.png

  语法注意事项:

  ·区分大小写;

  ·使用缩进表示层级关系;

  ·使用空格键缩进,而非Tab键缩进;

  ·缩进的空格数目不固定,只需要相同层级的元素左侧对齐。

  数据类型:

  对象:键值对的集合(简称 "映射或字典"),键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔(若不隔开,无法读取到对应的值)。

  数组:一组按序排列的值(简称 "序列或列表"),数组前加有 “-” 符号,符号与值之间需用空格分隔。

  2. 读取YAML文件

  新建read_yaml.py,主要用于定义读取yaml文件的方法,代码如下:

1-7.png

  脚本思路:

  ·打开文件使用:with..open

  ·读取文件内容:file.read()

  ·将读取内容转为json格式:yaml.safe_load

  API模板

  为获取验证码和登录的接口请求内相同代码创建模板,进行相关功能接口请求时,直接调用模板,传入对应的参数即可。

  API模板可分为3个部分:

  1. 公共请求数据

  将post和get请求内,相同的环境变量(调用读取yaml文件内容函数)、域名、进行独立封装。

  2. Post请求

  将post类型的接口请求进行独立封装,并返回json格式的数据。

  3. Get请求

  将get类型的接口请求进行独立封装,并返回json格式的数据。

  具体封装效果如下:

1-8.png

  登录模块

  获取验证码和进行登录时,直接调用已封装好的读取yaml内的函数、post请求函数、get请求函数。

1-9.png

  从上图可以看到,获取验证码和登录的函数内,只要定义好入参,然后直接调用api模板即可发起请求,无需在两个函数在再去单独写request请求和assert断言等代码片段。

  总结

  所有的项目代码都离不开基础知识,基础知识扎实稳定后,再去进行各种封装,对代码进行逐步优化、提炼,就可以从青铜升级成黄金了。

  过程中需要我们耐心、细心的去查找代码的共同点,以此建立对应的模板,从而减少代码量。

  所以大家在学习完基础后,可以尝试下做数据分离、模板封装、报告优化、持续集成,逐步优化代码,你就也是别人眼中的大佬了!



作者:绿豆芽呀   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,日前,OpenAI首席技术官米拉·穆拉蒂(MiraMurati)表示,希望外界能够对下一代GPT(即GPT-4)的技术水平更加冷静务实一些。  作为一个人工智能对话和撰稿工具,ChatGPT底层需要依靠自然语言处理模型来驱动,目前使用的语言模型是GPT-3.5,OpenAI计划升级到GPT-4版本。穆拉蒂表示,对于新版本,外界少一些炒作会更好些。  最近一段时间,媒体高度关注GPT-4技术的发布日期,以及将具备的新功能。网络上也出现了各种各样的传言,穆拉蒂显然是对这些网络不实信息作出了反应。  一些人工智能专家和硅谷从业者预测,GPT-4将会是一个重大升级版本,和GPT-3相比,新...
            0 0 830
            分享
          •   作为软件测试的守护神,软件测试岗位越来越受到IT企业的重视,也有更多人想要从事软件测试工程师职业。那么软件测试工程师的要求是什么?软件测试能干到多少岁呢?我们今天就来为大家介绍一下。  软件测试工程师其实是没有任何要求的,它不像开发行业对学历要求那么高,对逻辑思维要求那么强。什么性别、什么学历都可以担任,只要你能够学会并掌握基本的测试方法。如果硬要说有什么要求的话,那就是要细心、耐心。因为软件测试的工作重复性较强,一定要能够耐得住一遍又一遍地重复进行测试工作,而且要注重细节,不忽略每一处bug,尽自己所能提升软件质量。另外与人沟通的能力也很重要,因为在发现bug之后往往要跟软件开发进行沟通...
            0 0 791
            分享
          •   Locust介绍  Locust是一款使用Python开发的开源性能测试工具,支持分布式,可在多台主机上对系统持续发送请求,与Jmeter、LoadRunner的等压测工具使用线程的方式模拟用户请求不同,Locust是使用协程的方式模拟用户请求,协程的上下文切换是由自己控制,当一个协程执行完成后会主动让出,让另一个协程开始执行,切换是在用户态完成的,而线程切换是受系统控制,是在用户态与内核态之间切换,所以协程上下文切换的代价远比线程切换的代价小的多,因此Locust可以达到更高数量级的并发。  Locust安装  需要先安装python3.6以上版本,然后再安装Locust。  pip&n...
            0 0 1550
            分享
          •   谷歌在今天召开的 I / O 2023 开发者大会上宣布,新版 Google Home 应用脱离仅限于邀请的公共预览阶段,现在正式面向所有人开放。  新版 Google Home 应用进行了彻底的重新设计,引入了全新的收藏夹选项卡、改进了相机界面、为现有设备提供更丰富的控件、添加了对数十种设备的支持。  更重要的是新版 Google Home 应用添加了对 Matter 设备的支持。IT之家注:谷歌一直是开发该标准的主要参与者,但自去年 Matter 推出以来,谷歌在增加支持方面比其他公司慢。  当前新版 Google Home 仅支持室内 Nest Cam 和初代 Nest Cam 室外...
            0 0 1076
            分享
          • 软件测试:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。1、软件测试的定义软件测试就是根据需求,采用不同的测试方法或测试工具,对软件进行测试,尽可能早、尽可能多地发现软件的缺陷,跟踪并确保缺陷得到正确的解决,提高软件的质量。2、软件测试的目的软件测试为了发现程序存在的代码或业务逻辑错误;软件测试为了检验产品是否符合用户需求;软件测试为了提高用户的体验。3、什么是软件缺陷功能:没有实现的功能、实...
            0 0 1516
            分享
      • 51testing软件测试圈微信