首页 > 代码库 > Python学习-41.Python中的断言
Python学习-41.Python中的断言
先来点题外话:
在现代编程开发中,TDD(测试驱动开发)变得越来越流行(PS:DDD(领域驱动开发)也是,但两者并不冲突,就像面向过程和面向对象)。而作为TDD的根本——单元测试也是越来越重要,单元测试可以测试代码的正确性,例如以下的C#代码:
1 public class Helper2 {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就是这样简洁。
Python学习-41.Python中的断言
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。