微信号:grzlwx

介绍:光荣之路官方资讯

Python几种常用的测试框架(上)

2016-01-22 23:08 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

一、测试的常用规则

  1. 一个测试单元必须关注一个很小的功能函数,证明它是正确的;

  2. 每个测试单元必须是完全独立的,必须能单独运行。这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作。通常通过setUp()和setDown()方法处理;

  3. 编写执行快速的测试代码。在某些情况下,测试需要加载复杂的数据结构,而且每次执行的时候都要重新加载,这个时候测试执行会很慢。因此,在这种情况下,可以将这种测试放置一个后台的任务中。

  4. 采用测试工具并且学着怎么使用它。

  5. 在编写代码前执行完整的测试,而且在编写代码后再重新执行一次。这样能保证你后来编写的代码不会破坏任何事情;

  6. 在提交代码前执行完整的测试;

  7. 如果在开发期间被打断了工作,写一个打断的单元测试,关于你下一步将要开发的。当你回来工作时,你能知道上一步开发到的指针;

  8. 单元测试函数使用长的而且具有描述性的名字。在正式执行代码中,可能使用square()或sqr()取名,但是在测试函数中,你必须取像 test_square_of_number_2()、test_square_negativer_number()这些名字,这些名字描述更加清楚;

  9. 测试代码必须具有可读性;

  10. 单元测试对新进的开发人员来说是工作指南。

二、常见的测试框架

2.1 Unittest

   unittest是Python内置的标准类库。它的API跟Java的JUnit、.net的NUnit,C++的CppUnit很相似。

   通过继承unittest.TestCase来创建一个测试用例。

  具体请参考文档(https://docs.python.org/2/library/unittest.html)。

  举个例:

import unittest

def fun(x):
    return x + 1

class MyTest(unittest.TestCase):
    def test(self):
        self.assertEqual(fun(3), 4)

执行后成功。

但是,如果将期望的结果改成5,则执行的结果如下图所示:

 

 

2.2 Doctest

     doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果.即使从没接触过 doctest,我们也可以从这个名字中窥到一丝端倪。“它看起来就像代码里的文档字符串(docstring)一样” 如果你这么想的话,就已经对了一半了。

     举个例子:

def square(x):
    """Squares x.

    >>> square(2)
    >>> square(-2)
    >>> square(5)
    """

    return x * x

if __name__ == '__main__':
    import doctest
    doctest.testmod()

     当执行该代码后,会执行文档内>>> 后面的测试代码,并与下一行的结果进行比对。执行的结果如下:

     但是,如果我们把结果改一下,square(2)的结果改成5,测试代码如下:

def square(x):
    """Squares x.

    >>> square(2)
    >>> square(-2)
    >>> square(5)
    """

    return x * x

if __name__ == '__main__':
    import doctest
    doctest.testmod()

     执行的测试结果如下所示:

<未完待续>

(作者:廖飞 来源:http://www.cnblogs.com/liaofeifight/p/5145402.html)

公益传播测试知识、技能与正能量!感谢作者!
分享测试生活,思考测试人生!欢迎投稿!
文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。
735821166@qq.com


光荣之路
软件测试培训


官网:www.gloryroad.cn

微信公众号:gloryroadtrain

性能测试QQ群:415987441
测试招聘QQ群: 203715128
自动化3群QQ: 371211499

Python群:457561756


 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性 Android应用开发必备的20条技能 设计模式(Design Pattern) java多线程的同步和异步 台湾中央大学 洪兰教授的TED演讲 (视频)