zoukankan      html  css  js  c++  java
  • Selenium2+python自动化51-unittest简介【转载】

    前言

    熟悉java的应该都清楚常见的单元测试框架Junit和TestNG,这个招聘的需求上也是经常见到的。python里面也有单元测试框架-unittest,相当于是一个python版的junit。

    python里面的单元测试框架除了unittest,还有一个pytest框架,这个用的比较少,后面有空再继续分享。

    一、unittest简介

    1.先导入unittest

    2.用help函数查看源码解析

    3.查看描述:

    Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's Smalltalk testing framework.

    翻译:python的单元测试框架,是基于java的junit测试框架

    二、简单用法

    1.可以把上图的这段代码copy出来,单独运行,看看测试结果。

        Simple usage:
        
            import unittest
        
            class IntegerArithmeticTestCase(unittest.TestCase):
                def testAdd(self):  ## test method names begin 'test*'
                    self.assertEqual((1 + 2), 3)
                    self.assertEqual(0 + 1, 1)
                def testMultiply(self):
                    self.assertEqual((0 * 10), 0)
                    self.assertEqual((5 * 8), 40)
        
            if __name__ == '__main__':
                unittest.main()

    2.第一行是导入unittest这个模块

    3.class这一行是定义一个测试的类,并继承unittest.TestCase这个类

    4.接下来是定义了两个测试case名称:testAdd和testMultiply

    5.注释里面有句话很重要,这个要敲下黑板记笔记了:## test method names begin 'test*'

    --翻译:测试用例的名称要以test开头

    6.然后是断言assert,这里的断言方法是assertEqual-判断两个是否相等,这个断言可以是一个也可以是多个

    7.if下面的这个unittest.main()是运行主函数,运行后会看到测试结果(跑了两个用例耗时0.000秒,两个用例都通过):

    ..
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s

    OK

    三、小试牛刀

    1.上面的两个案例是加法和乘法,我们可以写个case试下减法和除法。

    2.有很多小伙伴不知道断言怎么写,断言其实就是拿实际结果和期望结果去对比,对比的方法很多,这里只是举的最简单的一个判断相等的方法。

    3.最后运行结果,第二个是失败的,失败原因:AssertionError: 3 != 3.5

    F.
    ======================================================================
    FAIL: testDivide (__main__.Test)
    这里是测试除法
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:/test/web-project/p.py", line 14, in testDivide
        self.assertEqual(result, hope)
    AssertionError: 3 != 3.5

    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s

    FAILED (failures=1)

    四、前置和后置

    1.setUp:在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件。

    2.tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。

    3.很多人执行完用例,都不去做数据还原,以致于下一个用例执行失败,这就是不喜欢擦屁股的事情,习惯不好。

    4.前置和后置都是非必要的条件,如果没有也可以写pass

    五、博客案例

    1.打开博客首页为例,写一个简单的case

    2.判断title完全等于期望结果

    3.运行通过,下面会有一个绿条显示:1 test passed

    六、参考代码

    # coding=utf-8
    from selenium import webdriver
    from selenium.webdriver.support import expected_conditions as EC
    import time
    import unittest

    class Blog(unittest.TestCase):

        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.get("http://www.cnblogs.com/yoyoketang")

        def test_blog(self):
            # 交流QQ群:232607095
            time.sleep(3)
            result = EC.title_is(u'上海-悠悠 - 博客园')(self.driver)
            print result
            self.assertTrue(result)

        def tearDown(self):
            self.driver.quit()

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

  • 相关阅读:
    171 01 Android 零基础入门 03 Java常用工具类02 Java包装类 01 包装类简介 01 Java包装类内容简介
    170 01 Android 零基础入门 03 Java常用工具类01 Java异常 08 Java异常总结 01 异常总结
    169 01 Android 零基础入门 03 Java常用工具类01 Java异常 07 异常链 01 异常链简介
    168 01 Android 零基础入门 03 Java常用工具类01 Java异常 06 自定义异常 01 自定义异常类
    167 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
    166 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 01 使用throws声明异常类型
    165 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 05 return关键字在异常处理中的使用
    DevExpress WPF v20.2版本亮点放送:全新升级的PDF Viewer
    界面控件DevExpress使用教程:Dashboard – 自定义导出
    DevExpress WinForms帮助文档:表单控件
  • 原文地址:https://www.cnblogs.com/caoj/p/7814222.html
Copyright © 2011-2022 走看看