• 0
  • 0
分享
  • 小白初学单元测试~(附上小案例)
  • 豆秸 2022-07-11 09:05:34 字数 2327 阅读 2282 收藏 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报告,方便查看单元测试结果

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 软件缺陷:1)软件未实现产品说明书要求的功能2)软件出现了产品说明书指明不应该出现的错误3)软件实现了产品说明书未提到的功能4)软件未实现产品说明书虽未明确提及但应该实现的目标5)软件难以理解、不易使用、运行缓慢或者从测试员的角度看最终用户会认为不好软件测试:为了发现软件产品中的各种缺陷,而对软件产品进行验证和确认的活动过程,此过程贯穿整个软件开发生命周期。 简单的说,软件测试是以发现错误为目的而执行的一个程序或系统的过程。软件测试的目的:验证软件需求和功能是否得到完整实现验证软件是否可以发布尽可能多的发现软件中的bug尽可能早的发现软件中的bug对软件质量做出合理评估预防下个版本可能出现的问...
            3 4 4020
            分享
          • 前言我在CSDN上看到一篇名为《程序员为什么非要参加一场编程竞赛》的文章,这是一篇译文,原著是国外的作者。这让我想起前段时间我参加的一场软件测试比赛,最终的感想可以用8个字概括,人无远虑必有近忧。在这里我想和大家分享我的参赛过程和赛后总结。一、赛事简介比赛给人的第一印象就是激情,热血,因为比赛一定能分出高低。编程竞赛在国内出现的时间比较早,现在已经上规模,成体系了,加之媒体的报道,大家也比较熟悉。但是软件测试比赛或许大家还没听说过。实际上成体系的软件测试比赛,例如CST全国大学生软件测试大赛,在2016年就已经首次举办,今年已经是第四届了。赛事项目分有:单元测试、性能测试、安全测试、web自动...
            2 1 2282
            分享
          •   各位小伙伴肯定会发现现在的测试岗招聘中或多或少要求会自动化测试技能了,伴随着整个测试行业的内卷,也要求所有从事测试的小伙伴掌握基本的自动化测试技能。但是很多人在刚开始学自动化测试时,会经常遇到一些棘手的问题,甚至抓耳挠腮也难解决,严重影响了学习进度,今天我就和大伙分享一下常见的问题及解决方案,希望能够对你掌握自动化测试有所帮助。  一、元素定位像是玄学,时而准确时而报错,怎么精准定位呢?  相信很多小伙伴对于几种元素定位方法应该都了然于胸了,如:ID定位,name定位,class定位,tag定位,XPath定位,CSS定位,Link定位,Partial link定位。像我就比较喜欢用CSS...
            1 1 695
            分享
          •   一.人工智能的发展历史  人工智能诞生于上世纪40~50年代,按照“人工智能之父”艾伦·图灵的定义:如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器具有智能。1956年夏天,美国达特茅斯学院举行了历史上第一次人工智能研讨会,会上麦卡锡首次提出了“人工智能”这个概念,被认为是人工智能诞生的标志。人工智能在上世纪20世纪50~70年代迎来黄金时代,在1966年~1972年期间,美国斯坦福国际研究所研制出机器人Shakey,这是首台采用人工智能的移动机器人,1966年美国麻省理工学院(MIT)的魏泽鲍姆发布了世界上第一个聊天机器人ELIZA。ELIZA的智能...
            0 0 1185
            分享
          • 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复查,是软件质量保证的关键步骤。定义1:软件测试是为了发现错误而在规定的条件下执行程序的过程。定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。由软件测试的定义,不难看出测试的目的,是寻找错误,并且是尽最大可能找出最多的错误。著名的Grenford J. Myers在《The Art of Software?Testing》一书中提出以下观点:测试是程序的执行过程,目的在于发现错误;一个好的测试用例在于发现...
            12 12 2146
            分享
      • 51testing软件测试圈微信