zoukankan      html  css  js  c++  java
  • 【自动化测试不求人】selenium单元测试框架unittest断言神器

    单元测试库(unittest)实现了我们开发代码过程中实际值和预期值进行比较这类功能,使用起来也很方便。Unittest作为一种单元测试框架,其思想来源于Junit,跟目前市场上主流的一些测试框架有很多相似之处。

    Unittest工作流中核心的四大组件简介:

    • Test fixture是指执行测试之前的准备工作,比如说数据清理工作,创建临时数据库,目录或者是开启某些服务进程等。
    • Test case是最小的测试单元,具有独立性。主要检测输出结果是否满足期望,这些结果是基于一系列特定的输入。Unittest提供了一个基类TestCase”用来创建新的test cases.
    • Test suite可以简单理解为是test case的集合。主要用来对于集成管理要在一起执行的测试用例。
    • Test runner也是unittest的一个重要的组件,主要是为了协调测试的执行并提供结果输出给用户参考。

     

    Unittest提供了很丰富的工具集来创建和运行单元测试。

    • 所有的测试用例类要继承基本类unittest.TestCasePython语法规定,父类要写在小括号内,如:XXXTest(unittest.TestCases)”。
    • unittest.main()作用是使一个单元测试模块变为可直接运行的测试脚本。

    main()方法使用TestLoader类来搜索所有包含在该模块中以test”命名开头的测试方法,并自动执行他们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9A-Za-z。因此A开头的测试用例方法会优先执行,以a开头会后执行。

    • unittest.TestSuite(),单元测试框架中的TestSuite()类是为了创建测试套件。其中最常用的一个方法是addTest()方法,目的是要将测试用例添加到测试套件中。
    • 每一个独立的单元脚本中的测试方法应该都是以test”字符串开始,这样的命名惯例是不能更改的,或则单元测试不会照常执行。
    • assertEqual()方法功能是验证实际执行结果是不是期望值。
    • assertTrue()和assertFalse()功能是验证是否满足一定条件。
    • assertRaises()是为了验证单元测试是否会抛出某一个特定异常,如TypeError。
    • setUp()方法是用于测试用例执行前的初始化工作。如以测试登录web应用为例,在setUp()方法中去实例化浏览器等操作。
    • teardown()方法用于测试用例执行之后的善后操作,如关闭数据库连接和关闭浏览器等操作。
    • assertXxx(),一般是一些断言方法,在执行测试用例的过程中,最终测试用例是否执行通过,否则判定预期值和实际值是否一致。

      1)普通断言示例:

    #学习有疑问请联系作者
    #作者qq:2574674466
    #作者邮箱2574674466@qq.com
    import  unittest
    import HTMLTestRunner
    
    class test_se(unittest.TestCase):
        def setUp(self):
            pass
        def test_01(self):
            self.assertEqual("selenium","appium")
        def test_02(self):
            self.assertEqual("tim","tim")
        def test_03(self):
            self.assertIn("a","abc")
    
        def tearDown(self):
            pass
    
    if __name__ == '__main__':
      unittest.main()

        2)批量执行示例:

    test_01.py

    #学习有疑问请联系作者
    #作者qq:2574674466
    #作者邮箱2574674466@qq.com
    import  unittest
    
    class test_se(unittest.TestCase):
        def setUp(self):
            pass
        def test_01(self):
            self.assertEqual("selenium","appium")
        def test_02(self):
            self.assertEqual("tim","tim")
        def test_03(self):
            self.assertIn("a","abc")
    
        def tearDown(self):
            pass
    
    if __name__ == '__main__':
        unittest.main()

    test_02.py

    #学习有疑问请联系作者
    #作者qq:2574674466
    #作者邮箱2574674466@qq.com
    
    import  unittest
    import HTMLTestRunner
    
    class test_se(unittest.TestCase):
        def setUp(self):
            pass
        def test_04(self):
            self.assertEqual("selenium","appium")
        def test_05(self):
            self.assertEqual("tim","tim")
        def test_06(self):
            self.assertIn("a","abc")
    
        def tearDown(self):
            pass
    
    if __name__ == '__main__':
       unittest.main()

    run.py 执行以test开头脚本

    #学习有疑问请联系作者
    #作者qq:2574674466
    #作者邮箱2574674466@qq.com
    import unittest
    import os
    #查询测试用例路径
    case_path = os.path.join(os.getcwd(),"testsuite")
    
    
    def allcases():
        discover = unittest.defaultTestLoader.discover(case_path,pattern="test*.py",top_level_dir=None)
        print(discover)
        return discover
    
    if __name__ == "__main__":
        runner = unittest.TextTestRunner()
        runner.run(allcases())

    视频、学习笔记联系qq:2574674466
    更多内容请关注公众号:“大牛测试

     

    欢迎加入交流群:Selenium学习群: 628908894
  • 相关阅读:
    内存管理工具
    c语言目录操作总结
    重写strstr、strcpy、memcpy、memset、atof算法
    统计编码量工具
    hdu4348
    bzoj4358: permu
    bzoj2658: [Zjoi2012]小蓝的好友(mrx)
    bzoj2657: [Zjoi2012]旅游(journey)
    bzoj3583: 杰杰的女性朋友
    bzoj3673 bzoj3674可持久化并查集
  • 原文地址:https://www.cnblogs.com/tim2016/p/15386323.html
Copyright © 2011-2022 走看看