首页 > 编程语言 >Python一个简单的单元测试

Python一个简单的单元测试

时间:2024-05-25 18:59:11浏览次数:17  
标签:__ Python 代码 简单 单元测试 roughly values measure

Python一个简单的单元测试

提示:以下内容均为个人原创!

文章目录


一、介绍

在使用Python制作模块后,总是不确定模块中的方法在很多数据下运行状态究竟如何?在一些极端数据下模块的反馈究竟是什么样的?那么单元测试就可以很好的解决这些个问题,今天我就使用一个简单模块去介绍单元测试。

二、使用

1.创建逻辑代码

首先我们先创建一个简单逻辑代码

def measure_roughly(values_A, values_B):
    a = values_A
    b = values_B
    try:
        if a > b:
            return a
        elif a == b:
            return 0
        elif a < b:
            return b
        else:
            return False
    except Exception as e:
        return False

这个代码使得接受传入两个参数values_A和values_B,然后将传入的两个值进行对比,输出大的那个值,如果相等时输出0。

2.生成单元测试

针对这个简单的代码我们生成一个单元测试代码进行测试

import unittest
class TestMeasuReoughlyFunction(unittest.TestCase):
    def test_measure_roughly(self):
        self.assertEqual(measure_roughly(1, "2"), 2)
        self.assertEqual(measure_roughly(-1, 1), 1)

if __name__ == '__main__':
    unittest.main()

3.生成单元测试的方式

(1).直接在逻辑代码中添加

你可以直接在你的方法后面添加这个单元测试代码,就像这样

import unittest
def measure_roughly(values_A, values_B):
    a = values_A
    b = values_B
    try:
        if a > b:
            return a
        elif a == b:
            return 0
        elif a < b:
            return b
        else:
            return False
    except Exception as e:
        return False
class TestMeasuReoughlyFunction(unittest.TestCase):
    def test_measure_roughly(self):
        self.assertEqual(measure_roughly(1, "2"), 2)
        self.assertEqual(measure_roughly(-1, 1), 1)

if __name__ == '__main__':
    unittest.main()

(2).单独制作

你也可以单独制作一个针对方法的单元测试,这样的话你需要导入你的方法才能进行单元测试,像这样

import unittest
# 这里导入逻辑代码文件中的方法
class TestMeasuReoughlyFunction(unittest.TestCase):
    def test_measure_roughly(self):
        self.assertEqual(measure_roughly(1, "2"), 2)
        self.assertEqual(measure_roughly(-1, 1), 1)

if __name__ == '__main__':
    unittest.main()

注:如果是比较复杂的代码建议单独去写单元测试代码,我这里只使用第一种方式演示,也就是直接把测试代码写在方法后面

4.运行代码

运行你的代码
其中measure_roughly(values_A, values_B), results)的values_A, values_B就是你要传入的两个数,而results是你预期得到的结果,当你的方法返回的结果不等于你预期得到的结果时就会报出错误。

通过这种列举的方式,对你的方法进行检测其是否能达到预期的值,要注意的是,在列举的过程中,首先要考虑到各种边缘性的值传入时,是否可以拿到预期的数据,需要考虑不同类型数值传入后,是否可以拿到预期的数据,在这里我举出了两个都为int类型-1和1的例子,和一个为int类型一个为str类型1和"2"的例子,结果就是

F
======================================================================
FAIL: test_measure_roughly (__main__.TestMeasuReoughlyFunction)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "script.py", line 18, in test_measure_roughly
    self.assertEqual(measure_roughly(1, "2"), 2)
AssertionError: False != 2

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)

Exited with error status 1

可以看到,这个代码逻辑在传入数据的时候有一个问题,只有传入的两个值同时都是int类型时才可以正确输出结果,如果是非int类型则会输出False,很显然False这个值并不是我们想要得到结果。


总结

在编辑代码的过程中,会存在很多比较复杂的逻辑,我们需要完成逻辑得到对应的有效数值。上面的例子中,我们可以轻易地发现代码的问题所在,从而针对问题进行对应的更改,而在比较复杂的逻辑中,则就更加需要使用单元测试来测试方法的运行状态,在什么情况下会得到什么内容,得到的内容是否为预期结果,或结果范围之内,从而保证代码的可运行性。

注:本篇幅只适合新手入门食用,大佬请绕道!如有叙述错误的地方还望指正!

标签:__,Python,代码,简单,单元测试,roughly,values,measure
From: https://blog.csdn.net/ayqjl/article/details/139174091

相关文章

  • c++实现简单算法【1】
    1.交换两数inta=2,b=3;inttemp=a;a=b;b=a; 函数包装指针#include<stdio.h>#include<string.h>//#include<iostream>//usingnamespacestd;voidswap(int*a,int*b){ inttemp=*a; *a=*b;//修改a指针指向的地址的对应的变量的值,地址不变 *b=temp;}int......
  • Python-GEE遥感大数据分析
    随着航空、航天、近地空间遥感平台的持续发展,遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升,呈现出大数据特征。这为相关研究带来了新机遇,但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域、多尺度海量遥感数据处理需求。为解......
  • WPF一个简单的属性编辑控件
    代码:publicclassPropertiesControl:Grid{[TypeConverter(typeof(LengthConverter))]publicdoubleRowHeight{get{return(double)GetValue(RowHeightProperty);}set{SetValue(RowHeightProperty,......
  • 【Python进阶】轻松上手,6种打包Python代码的方法,让你的程序变成exe应用!
    Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。本文将介绍6种将Python代码打包成exe应用的方......
  • 通过Python爬取公告内容
    在网络时代,信息获取变得更加便捷。通过网络爬虫技术,我们可以从互联网上快速获取各种信息。本文将介绍如何使用Python爬虫工具从指定网站上获取公告内容,并提取其中的关键信息。1.简介在本文中,我们将使用Python的requests库和BeautifulSoup库来实现网页内容的获取和解......
  • Python--List列表
    list列表⭐⭐1高级数据类型Python中的数据类型可以分为:数字型(基本数据类型)和非数字型(高级数据类型)●数字型包含:整型int、浮点型float、布尔型bool、复数型complex●非数字型包含:字符串str、列表list、元组tuple、集合set、字典dict高级数据类型的特点●都是一个序列se......
  • 【2024】文字游侠AI丨一键创作爆文赚米!只需简单五步,小白可上手,附渠道和详细教程!
    在信息爆炸的今日,如何借助AI人工智能工具在头条等平台赚取收入?何谓“文字游侠”?它又是如何操作的?它的可靠性又如何呢?作为一名实践者,我愿与大家分享一些经验,希望对你们有所帮助。首先,让我们来了解一下什么是“文字游侠”。它是一种AI智能创作工具,能够根据原始内容进行二次创......
  • 简单的贪心(一)
    礼物 查看测评数据信息国庆马上要到了。小明喜欢的礼物有n种分别是:公仔、电子手表、漫画书等。每种礼物有一件,每种礼物价钱都不一样。小明手头上有m元。小明最多可以买多少件礼物?输入格式第一行,两个整数:nm 1<=n<=100,1<=m<=100000。第二行,n个空格分开的整数(......
  • 【爬虫软件】用Python开发的抖音关键词搜索工具,可筛选爬取热门视频、最新视频等
    一、背景介绍1.1爬取目标用python开发的爬虫采集软件,可自动按关键词抓取抖音视频数据。为什么有了源码还开发界面软件呢?方便不懂编程代码的小白用户使用,无需安装python,无需改代码,双击打开即用!软件界面截图:爬取结果截图:结果截图1:结果截图2:结果截图3:以上。1.2演......
  • Django应用创建到启动的简单示例
    一、系统环境和前置安装Ubuntu系统192.168.2.101,客户端192.168.2.100python3及虚拟环境管理库python3-venv创建项目文件创建djangoweb项目配置ALLOW_HOSTS=['*']二、创建并注册app创建django-adminstartappapp1注册app修改项目配置文件settings.py,在INSTALLED_APPS......