• 0
  • 0
分享
  • 小白初学单元测试~(附上小案例)
  • 豆秸 2022-07-11 09:05:34 字数 2327 阅读 1602 收藏 0

在学习测试理论基础时,相信大家都曾看到这个问题“请说说软件测试分类”,其中一个答案就是:按测试阶段,软件测试可分为:单元测试、集成测试、系统测试、验收测试。

那么,单元测试?单元测试?什么是单元测试呢?最初作为一个对单元测试毫无概念,对单元测试的了解仅限于官方简介说明,且只会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-本文仅测试部门请求

投81.png

测试目的

执行单元测试,校验“新闻资讯”接口功能,本文示例验证以下三条用例:

  1. 校验key值错误

  2. 校验key值成功且成功请求科技新闻

  3. 校验新闻类型type为空时,可成功请求到默认推荐的头条新闻

单元测试的测试思路跟功能测试一样,主要在验证代码实现的功能,不同点在于单元测试阶段无需全面覆盖测试点,仅需要保证主业务流程能通过即可。

在前端页面未完成,或其他开发功能未完成之前进行单元测试,在一定程度上可提高产品质量,节约后期功能测试的时间和人工成本。

环境准备

语言环境:python

编译工具:pycharm

依赖库:Pytest(需要通过pip另外安装)、Requests(需要通过pip另外安装)、os(python自带库,无需另外安装)

代码设计

上干货(单元测试代码)

投82.png

代码目录设计

  1. tests文件夹:存放单元测试代码文件test_news.py

  2. report文件夹:存放测试报告源数据(json格式)

  3. report_html文件夹:存放html格式测试报告

投83.png

单元测试代码解说

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!'  #公共期望值

2.单元测试用例

1.测试用例以test开头,这样pytest框架才可识别到

2.利用requests发起http接口请求

       2.1http请求要素:域名、地址、方法、请求头

       2.2利用requests库发起请求

由于接口是get请求,所以本文可以直接用response =requests.get()

       2.3将请求响应结果进行json格式化,调用python的方法:response.json()

       2.4提取响应内容,设置断言

3.运行测试用例

       3.1通过pytest命令运行脚本

由于pychram会自动识别pytest框架,所以运行脚本时,需要点击注意不要使用默认的pytest框架运行,否则不会生成对应的测试报告文件。

投84.png

投85.png

       3.2利用pytestde main函数执行用例,并生成allure测试报告源数据

       3.3利用python的os模块,将测试报告转为html格式

测试报告展示

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

投86.png

小白自学建议

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

  • 学习python基础

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

  • 掌握python-第三方requests库的基础使用

    了解如何发起不同类型的接口请求,常用的无非就是失重:get(查询),post(添加),put(更新),delete(删除)

  • 学习pytest框架

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

  • 测试报告优化

    引入allure生成html报告,方便查看单元测试结果

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   由于测试的薪水比较高,最近几年有很多其他专业的人涌进了测试行业,加速了这个行业的内卷,但是据某招聘网上的数据统计,测试当前的需求量还是远高于其他行业的平均线的。所以,测试的现状我觉得是不错的,至少几年内是无需担心的。  测试就业前景如何,我现在居住在一个三线城市,朋友是从事测试工程师,处于三线城市一个测试开发工程师就月入7k到9k更别说一线,二线城市,你说他的前景如何?现在还是互联网普及时代,新媒体快速发展,测试就显得尤为重要。  一、测试基本知识  测试同学的职责无非就是两个,保证软件测试质量和提高测试效率。  为了达到这两个目标,测试同学的日常就包括:常规需求的功能测试,自动化测试,性...
            0 0 438
            分享
          • 随着中国IT业的发展和软件市场的不断成熟,国内人工智能(AI)、物联网、大数据、云计算等IT产业得到了迅速发展。但是,目前中国软件产业在产品功能和性能测试等领域还存在着严重不足。根据Gartner的预测:到2022年,IT行业的开发总成本将从3.76万亿美元增涨至3.87万亿美元。而到了2023年,全球相应的软件测试市场,预计将出现14%的综合年度增涨率。随着软件市场的扩大,更多的企业开始认识到软件测试的重要性。在未来,如何应对快速发展的技术变革,是测试行业和测试人员需要深耕的问题。《2008-2022年软件测试现状调查报告》始终立足于我国软件测试行业现状,从软件测试者的个人特征、社会特征以及...
            0 0 1123
            分享
          •   Character.ai是一家让用户设计自己的人工智能角色的开发商,其移动应用程序的使用率正在赶超ChatGPT。根据市场情报公司 Similarweb 最近的一项分析,由 a16z 支持的 Character.ai 的 iOS 和 Android 应用程序目前在美国的月活跃用户数为 420 万,而 ChatGPT 移动应用程序在美国的月活跃用户数接近 600 万。  这是继2023年5月Character.ai发布之后的又一次显著增长,当时这家初创公司分享说,它在第一周的安装量就突破了170万。当然,安装量并不等同于用户,更不等同于活跃用户。事实上,根据移动营销公司 Appsflyer ...
            0 0 496
            分享
          •   据不少网友反馈,今日爱奇艺App开始对投屏功能作出限制,之前黄金VIP会员支持最高4K清晰度投屏,现在只能选最低的480P清晰度,要想进行4K投屏必须购买白金VIP会员。  不少网友表示,480P清晰度太低,几乎无法观看。  IT之家从爱奇艺官网了解到,黄金VIP会员连续包年118元/年,电脑、手机、平板可用,黄金VIP会员连续包年198元/年,拥有黄金VIP会员的同时电视也可以使用,现在降低投屏的分辨率后,只能逼着用户选择白金VIP会员了。  值得一提的是,近期优酷更改了会员规则,一个账号仅限登录一台手机,优酷称此举是为保护用户账号安全,打击黑灰产,并且考虑到绝大多数用户的使用习惯,优酷...
            0 0 762
            分享
      • 51testing软件测试圈微信