【自动化测试不求人】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
更多内容请关注公众号:“大牛测试

 

posted @ 2021-10-17 15:30  大牛测试技术  阅读(233)  评论(0编辑  收藏  举报