• 11
  • 12
分享

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

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

  测试目的

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

  1. 校验key值错误

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

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

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

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

  环境准备

  l 语言环境:python

  l 编译工具:pycharm

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

  代码设计

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

1-2.png

  代码目录设计

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

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

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

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

  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命令运行脚本

1-4.png

1-5.png

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

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

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

  测试报告展示

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

1-6.png

1-7.png

  小白自学建议

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

  1. 学习python基础

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

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

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

  3. 学习pytest框架

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

  4. 测试报告优化

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

  最后的最后良心建议大家~学习不止要看和听,还要不断的练习,不断地总结归纳,才能更上一层楼。



作者:绿豆芽呀   

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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   本文共三部分,分别介绍项目重点考察什么以及如何更好地介绍自己参与项目。  一、项目经验考察的重点是什么?  众所周知,测试技术岗的整个面试过程分自我介绍、项目考察、技术考察、编程、发散题考察候选人性格、处事以及团队协作等。而项目经验考察可以理解为正式进入面试环节,所以能否"开门红",给面试官耳目一新的感觉至关重要。  通常来说,候选人的简历通过能进入面试环节,说明面试官是认可候选人工作经验对当前团队有所帮助或者说符合当前团队急需弥补的短板的。那么项目经验会重点考察什么?  1. 考察候选人项目总结能力。  2. 考察候选人项目经验是否作假。  3. 考察候选人参与项目收...
            0 0 1132
            分享
          •   测试用例格式包括十大特点  1)用例编号  2)测试项  3)测试标题  4)用例属性  5)重要级别:高中低  6)预置条件  7)测试输入  8)操作步骤  9)预期结果  10)实际结果  等价类  1,等价类定义  2,等价类划分  3,等价类划分规则  4,进行等价类用例设计  5,案例  边界值  1,边界值的三点  2,边界值应用场景  3,边界值方法应用步骤  判定表  1,定义  2,重要概念  3,判定表应用步骤  4,案例  因果图  1,输入与输入的关系  2,输入与输出的关系  3,案例  正交试验  1,因子和水平的定义  2,特点  3,设计流程  4,注意点...
            1 1 3181
            分享
          • 1. Charles安装官网下载安装Charles:https://www.charlesproxy.com/download/2. HTTP抓包(1)查看电脑IP地址  例如:192.168.1.169(2)设置手机HTTP代理手机连上电脑,点击“设置->无线局域网->连接的WiFi”,设置HTTP代理:服务器为电脑IP地址:如192.168.1.169端口:8888设置代理后,需要在电脑上打开Charles才能上网(3)电脑上打开Charles进行HTTP抓包手机上打开某个App或者浏览器什么的,如果不能上网,检查前面步骤是否正确点击“Allow”允许,出现手机的HT...
            1 0 4701
            分享
          • 前言:本篇讲堂是紧接【安全测试工具-进阶篇[访问控制漏洞(上)]】的内容。例牌,先说下安全测试工具的更新情况【工具地址:https://gitee.com/samllpig/SafeTool-51testing】服务端增加解析隐藏链接的功能重放窗口修改500响应无法显示的问题正文:漏洞讲解:所属模块: (A5) Broken Access Control [访问控制漏洞]7.1 菜单项: Missing Function Level Access Control [缺少功能级访问控制],本章共3个小节7.1.1 第一节主题: 介绍缺少功能级访问控制内容:这节的主题...
            0 0 52
            分享
          •   搞了一天终于把robotframework框架搭建起来了,来一个总结,记录一下吧!  以前在公司在python2.7上搭建过,说是搭建不如是按照文档一步步的操作,文件什么的全是同事准备好的,不会的就喊同事帮忙,所以安装下来还是什么也不懂,这次完全是自己操作,需要的文件也是自己动手准备,遇到问题就百度,捣鼓了一天终于搭建好了,也收获颇多。  好了,废话说了一堆,现在进入正题。  01  安装robotframework,首先要安装python,安装的是python3.8.5。  安装的时候选择自定义安装,这样就可以在接下来的页面上勾选自动安装pip,自动写环境变量以及手动选择安装在哪个盘下。...
            14 15 1805
            分享
      • 51testing软件测试圈微信