zoukankan      html  css  js  c++  java
  • Python学习-41.Python中的断言

    先来点题外话:

    在现代编程开发中,TDD(测试驱动开发)变得越来越流行(PS:DDD(领域驱动开发)也是,但两者并不冲突,就像面向过程和面向对象)。而作为TDD的根本——单元测试也是越来越重要,单元测试可以测试代码的正确性,例如以下的C#代码:

    1 public class Helper
    2 {
    3     public string RemoveHtmlMarkup(string str)
    4     {
    5         return str;
    6     }
    7 }

    需求是去除字符串中的html标记。当然现在这样是错误的,只会原样输出。

    接下来编写测试代码。(使用了NUnit)

     1 [TestFixture]
     2 public class HelperTest
     3 {
     4     [Test]
     5     public void RemoveHtmlMarkupTest([Values("<html></html>")]string str)
     6     {
     7         var output = new Helper().RemoveHtmlMarkup(str);
     8         Assert.False(output.Contains("<html>"));
     9     }
    10 }

    现在肯定是不通过的了。修改原来的代码,去除掉"<html>"然后再跑测试,过了,html标记不止这么点(还有title等等),然后测试代码修改,不通过,修改Helper的代码。这样反复进行,TDD就是这样。

    当然这个例子可能并不是很好,将就一下吧。

    好了,再继续就扯题了,回到Python中。

    首先,令我想不到的是,Python中有断言,并且上升到了一等公民——关键字的水平。使用的关键字是assert。语法很简单,不像C#中Assert还得点(无论是MSUnit还是NUnit)。

    1 var = input('please input 1:')
    2 assert var == '1','you must input 1'

    assert关键字后跟两个或一个参数。第一个参数是一个布尔值,如果该布尔值为False,则断言不通过,抛出一个AssertionError的错误,第二个参数是错误的描述,也可以不码上,但一般情况下还是码上吧。

    呃,就是这几行,没了。Python就是这样简洁。

  • 相关阅读:
    02Hibernate入门
    01Hibernate概述
    ExtJS布局-Layout
    STARLIMS 安装升级解决方案
    Windows Server 2012 安装.Net Framework 3.5
    vim 复制操作
    linux下挂载新硬盘
    转载 更改mysql 数据存储路径
    转载 阿里云centOS防火墙配置
    (转载)java线程
  • 原文地址:https://www.cnblogs.com/h82258652/p/4001160.html
Copyright © 2011-2022 走看看