Python断言在Python中,由于开发人员发现错误,并在设计中发出问题,他们执行他们的代码具有先进的技术我们将在这篇博客中掩盖。代码中的任何意外情况都将触发断言并导致中止程序,并识别未来改进的错误。软件开发人员如何构建强大的程序?具有断言和单元测试,开发人员提高其代码。

在更简单的级别,我们如何更改软件,代码程序和算法 - 而不丢失原始功能?在此博客文章中,我们将学习编写简单的Python程序并将其更新为要求更改,所有时间都使用单元测试捕获此行为。我们将学习如何Web开发人员强制执行他们的设计,并获得信心

符合断言声明

如果你答:开始Python用户,您可以通过在Windows中的空闲环境或Linux中的shell交互地使用Python解释器。首先在shell中键入,

$ python.

您应该看到以下提示邀请您探索语言。

[电子邮件受保护]:/ usr / username / $ pythonPython 2.7.3(默认值,2013年9月26日,20:08:41)[GCC 4.6.3] Linux2有关更多信息,请输入“帮助”,“版权”,“Credits”或“许可证”。>>>

通过键入解释器的代码行,并以红色突出显示输出,而代码为黑色,

>>> SERSERT TRUE >>> ASSERT 1 + 1 >>> ASSERT 1 + 1> 0 >>> SERERT 1 + 1  -  4 >>> ASSERT 0回溯(最后最新呼叫):文件“”,第1行,在assertionerror.>>>断言假回溯(最后最新呼叫):文件“”,第1行,在assertionerror.

您的实证实验向您展示了关于断言声明的事情;即,关于表达式的真实评估是安静的,关于它提出的陈述的虚假评估assertionerror异常。

声明语句

Assert语句是Python语言中的关键字。您可以通过在解释器中键入来显示关键字列表,

>>>导入关键字>>> print关键字.kwlist['并作为', '断言','休息','班','继续','def','del','elif','else','除了','exec','figly','for'',',','',',',',','',',','','',',',','','','','',',',','',','',','',',','','',','',',','','',','','','',','',','',',','','','',',','',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')“全球”,'如果','进口','','','lambda','不是','或','pass','print','提升','return','try','虽然',',','收益']

assert语句的语法看起来像,

断言<表达>

assert声明的地方评估表达式并提出一个assertionerror.当所述表达式在Python中具有假值时异常。如果表达式评估没有,假,0,或者[]然后断言触发了assertionError。

例如,

>>> Assert []回溯(最后最新呼叫):文件“”,第1行,在assertionerror.>>>断言无回溯(最后最新呼叫):文件“”,第1行,在assertionerror.>>>断言假回溯(最后最新呼叫):文件“”,第1行,在assertionerror.>>>断言0.回溯(最后最新呼叫):文件“”,第1行,在assertionerror.

节目设计

程序员使用断言语句来引发错误以捕获其代码的意外行为。例如,如果您写了一个程序来计算实体的卷或多边形的区域,则可以包括卷或区域分别不应为零的断言;即断言区域> 0

示例 - 在因子函数中使用断言

数字的阶乘N,被定义为从1到n的数字的乘积;即n!= 1 * 2 * 3 * ... n。显然,计算阶乘的直接方式是使用for-loop,但我们更喜欢使用递归定义。这种递归形式是等同的,准确的,阶乘函数的数学定义正在使用符号;即n!=(n-1)!* n。在这里,我们可以使用断言声明来确保阶乘结果总是积极的。

显然,作为迭代和递归方式的程序将其作为程序写入,

#递归方式写作阶乘def fact(n):if(n == 0):返回1.0返回事实(n  -  1)* n;如果__name__ ==“__main__”:对于I系列(0,10 + 1):fact_val =事实(i);断言(Fife_Val> 0)#Factorial始终是非零打印(“%d!=%g”%(i,fact_val))

运行程序

您可以从源网站,python.org,运行测试和程序,为您的平台下载Python软件包$ pythonfactorial_v1.py.,是解释代码然后运行程序的命令

0!= 11!= 12!= 23!= 6.4!= 24.5!= 120.6!= 720.7!= 5040.8!= 40320.9!= 362880.10!= 3.6288E + 06

错误和修复

程序中的函数中有各种各样的错误,

  1. 功能确实吹出负输入。你需要包括守卫
  2. 功能不适用于复杂的输入
  3. 大输入n的数值溢出

以下列表修复了错误

#递归方式写法遗弃事实(n):if(isinstance(n,complex)):如果(n == 0):返回1.0 elif(n <0):提出异常(“无法计算负数的阶乘”)断言(n> 0)#since所有其他案例都在别处处理返回事实(n  -  1)* n;如果__name__ ==“__main__”:对于I范围(0,10 + 1):print(“%d!=%g”%(i,事实(i)))打印(“%d!=%g”%( -  5 + 4J,事实(-5 + 4J)))#复杂打印的例外(“%d!=%g”%( -  5,事实(-5)))#RAINCES异常

添加单元测试

现在让我们专注于编写在各种模式下练习功能的测试用例,并锁定行为。

Python具有一个强大的单元测试框架,称为单元测试模块,我们将使用它来编写单元测试,以确保我们的解决方案无法对可能的回归。

每个测试点都在名为“test_”的函数中,它练习“事实”的各种情况,并将结果与​​内置数学函数'Math.Factorial'进行比较。通常,使用下一节中的单位测试API方法,使用具有已知结果的功能输出的比较。

“factorial_test.py”的代码列表如下,

从测试导入test_support类的Import unittest导入数学导入factorial_v1 from test_support类factorialtesttesttesttest(unittest.testcase):def设置(self):打印(“设置”)def Teardown(self):print(“清理”)def test_positives(self):for x范围(0,10 + 1):ACT = MATH.Factorial(x)val = factorial_v1.fact(x)打印(“%d!= =%g ==%g”%(x,val,行动))自我。断言AlmostEqual( act, val, 1e-1 ) def test_negative(self): passed = False try: factorial_v1.fact( -3 ) except Exception as e: passed = True and (e.message.find("Cannot calculate")>= 0 ) self.assertTrue( passed ) ## alternate way with self.assertRaises( Exception ) as cm: factorial_v1.fact(-3) if __name__ == "__main__": test_support.run_unittest(FactorialTest)

并在Python解释器上运行它以查看显示2个unittest已传递的消息,并且在屏幕上打印了快乐的“确定”消息。

概括

软件开发人员使用断言来强制设计程序中的不变性,并测试对回归的那些程序。Python Assert语句是在代码中强制执行不变性的关键工具之一,以及在没有回归的情况下启用用户和开发人员的程序。继续留在顶部,了解更多信息回归测试和软件设计


    
   

Python的顶级课程

绝对初学者的Python
绿色变色龙学习
4.4 (18,621)
Python 3:深潜席(第4部分 - OOP)
Fred Baptiste.
4.8 (1,167)
Python为初学者完成MasterClass
Mihai Catalin Teodosiu,Epicpython学院
4.5 (2,425)
畅销书
完整的Pandas Bootcamp 2021:数据科学与Python
Alexander Hagmann.
4.7 (2,003)
算法交易A-Z配有Python,机器学习和AWS
Alexander Hagmann.
4.6 (492)
畅销书
Python的设计模式
Dmitri Nesteruk.
4.5 (1,318)
人工智能:Python的强化学习
懒惰的程序员团队,Lazy Programmer Inc.
4.6 (8,589)
畅销书
高级AI:Python的深度加固学习
懒惰的程序员团队,Lazy Programmer Inc.
4.6 (3,868)
数据科学:Python中的自然语言处理(NLP)
懒惰的程序员公司
4.6 (9,608)
收视率最高

更多Python课程

蟒蛇学生也会学习

赋予你的团队。引领行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求演示