51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3632|回复: 1
打印 上一主题 下一主题

[原创] 单元测试到底多好学?测试小白告诉你!

[复制链接]
  • TA的每日心情
    擦汗
    3 小时前
  • 签到天数: 1047 天

    连续签到: 5 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-6-2 11:05:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在学习测试理论基础时,相信大家都曾看到这个问题“请说说软件测试分类”,其中一个答案就是:按测试阶段,软件测试可分为:单元测试、集成测试、系统测试、验收测试。
      那么,单元测试?单元测试?什么是单元测试呢?最初作为一个对单元测试毫无概念,对单元测试的了解仅限于官方简介说明,且只会if else基础语法的初学小白而言。觉得单元测试肯定是需要强大的代码能力,是那种能写上千万个字符代码的资深码农才会的技能。
      后面学习了测试开发课程后发现,其实单元测试从某种层面上可以简单的说就是测试某个单元函数方法是否满足设计的测试。在前端界面未实现的情况下,通过写单元测试代码来调用测试这个函数。
      例如:开发写了一个求和函数,必填项是a和b。那么单元测试就是,写一个测试代码片段,调用这个求和函数,测试看是否能正确计算结果。至于单元测试要测试到什么深度,可根据实际情况进行(若公司有接口自动化测试,那么单元测试可仅验证到功能是否实现,至于各个入参规范或其他场景测试可交给接口自动化测试去进行)
      今天我用一个简单的获取新闻资讯的接口来示范单元测试。
      测试对象:获取新闻资讯接口
      环境物料:使用python(开发语言)+pytest(测试框架)+allure(测试报告)
      收货知识:
      1. 单元测试的概念
      2. pytest框架的使用
      3. 引用allure报告
      4. requests发起http请求

      接口文档
      Host(域名): http://v.juhe.cn
      Path(路径):/toutiao/index
      Method(请求方法):get
      Params(入参):
      1.key-需要自行去聚合数据申请;
      2.type-本文仅测试部门请求


      测试目的
      执行单元测试,校验“新闻资讯”接口功能,本文示例验证以下三条用例:
      1. 校验key值错误
      2. 校验key值成功且成功请求科技新闻
      3. 校验新闻类型type为空时,可成功请求到默认推荐的头条新闻
      单元测试的测试思路跟功能测试一样,主要在验证代码实现的功能,不同点在于单元测试阶段无需全面覆盖测试点,仅需要保证主业务流程能通过即可。
      在前端页面未完成,或其他开发功能未完成之前进行单元测试,在一定程度上可提高产品质量,节约后期功能测试的时间和人工成本。

      环境准备
      l 语言环境:python
      l 编译工具:pycharm
      l 依赖库:Pytest(需要通过pip另外安装)、Requests(需要通过pip另外安装)、os(python自带库,无需另外安装)

      代码设计
      上干货(单元测试代码):


      代码目录设计
      1. tests文件夹:存放单元测试代码文件test_news.py
      2. report文件夹:存放测试报告源数据(json格式)
      3. report_html文件夹:存放html格式测试报告


      单元测试代码解说
      1.导入相关模块
    import os   #python自带模块,主要用于将测试报告数据源文件json转为html报告
    import pytest  #单元测试框架
    import requests #python第三方库requests,用于模拟发送http请求


      2.配置初始化
      配置初始化模块,主要是初始化接口请求的域名、地址、期望值、请求头信息等公共信息:
    host='http://v.juhe.cn'
    path='/toutiao/index'
    header = {'Content-Type': 'text/html;charset=utf-8'}
    expect='success!'  #公共期望值


      3.单元测试用例
      1)测试用例以test开头,这样pytest框架才可识别到
      2)利用requests发起http接口请求
      2.1)http请求要素:域名、地址、方法、请求头
      2.2)利用requests库发起请求
      由于接口是get请求,所以本文可以直接用response =requests.get()
      2.3)将请求响应结果进行json格式化,调用python的方法:response.json()
      2.4)提取响应内容,设置断言
      3)运行测试用例
      3.1)通过pytest命令运行脚本



      由于pychram会自动识别pytest框架,所以运行脚本时,需要点击注意不要使用默认的pytest框架运行,否则不会生成对应的测试报告文件。
      3.2)利用pytestde main函数执行用例,并生成allure测试报告源数据
      3.3)利用python的os模块,将测试报告转为html格式

      测试报告展示
      Allure默认的报告模板,展示内容不够详细,目前只有执行失败的用例会显示断言结果,执行通过的用例无法看到详情的内容。若需要看详细的内容,就需要对allure报告进行二次开发优化。



      小白自学建议
      通过上面单元测试的案例,可以初略的了解到我们在日常项目中开展接口单元测试所需要具备的知识。这边给大家总结下个人的学习路线概要,虽然总结的较为粗略,但是也是在个人不断的摸索练习实践中总结出来的经验,在此提供给大家参考:

      1. 学习python基础
      网上百度教程可以学习基础语法,例如菜鸟教程等。

      2. 掌握python-第三方requests库的基础使用
      了解如何发起不同类型的接口请求,常用的无非就是几种:get(查询)、post(添加)、put(更新)、delete(删除)。

      3. 学习pytest框架
      至少掌握一种自动化框架,个人选择pytest框架,了解pytest的规范必须以test开头,pytest运行测试用例的命令等。

      4. 测试报告优化
      引入allure生成html报告,方便查看单元测试结果。
      最后的最后良心建议大家~学习不止要看和听,还要不断的练习,不断地总结归纳,才能更上一层楼。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-9 14:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2021-6-3 17:24:54 | 只看该作者
    pytest框架经常拿来做接口自动化测试
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 12:39 , Processed in 0.065008 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表