自学内容网 自学内容网

自动化测试 | UnitTest框架

1. TestCase(测试用例)

步骤:
            1. 导包 import unittest
            2. 新建测试类并继承 unittest.TestCase
            3. 测试方法必须以test字母开头

运行:
            1. 运行测试类所有的测试方法,光标定位到类当前行右键运行
            2. 运行单个测试方法:光标放到测试方法当前行。

测试脚本:

# 导包
import unittest

# 定义乘法函数
def sub(x, y):
    return x*y

# 定义测试类 并 继承
class Test01(unittest.TestCase):
    # 定义测试方法
    def test_sub01(self):
        result = sub(1, 2)
        print("test1:", result)

    def test_sub02(self):
        result = sub(3, 2)
        print("test1:",result)
        print("__name__内置变量获取当前运行的模块名称:", __name__)

    def test_sub03(self):
        result = sub(5, 2)
        print("test1:", result)



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

运行效果:

2.TestSuite(测试套件),TextTestRunner(以文本的形式运行测试用例)

步骤: 
            1. 导包
            2. 获取测试套件对象 suite = unittest.TestSuite()
            3. 调用addTest()方法 添加测试用例 

添加测试用例方法: 
            1. suite.addTest(类名("方法名称")) # 添加指定类中指定的测试方法
            2. suite.addTest(unittest.makeSuite(类名)) # 添加指定类中所有已test开头的方法

TextTestRunner:
        说明:执行测试套件方法
        步骤: 
            1. 导包
            2. 实例化后去执行套件对象 runner = unittest.TextTestRunner()
            3. 调用run方法去执行 runner.run(suite)
 

测试脚本:

test09.py

import unittest

class Test02(unittest.TestCase):
    def test01(self):
        print("test01执行")

    def test02(self):
        print("test02执行")

    def test03(self):
        print("test03执行")

    def test04(self):
        print("test04执行")


if __name__ == "__main__":
    print("__name__的值:", __name__)

run_main.py

import unittest
from scripts.test09 import Test02
# 实例化 suite
suite = unittest.TestSuite()
# 调用添加方法
suite.addTest(Test02("test01"))

# 执行测试套件
runner = unittest.TextTestRunner()
runner.run(suite)

测试结果:

3.TestLoader(批量执行测试用例-搜索指定文件夹内指定字母开头的模块) 

TestLoader:
        说明:
            1. 将符合条件的测试方法添加到测试套件中
            2. 搜索指定目录文件下指定字母开头的模块文件下test开始的方法,并将这些方法添加到测试套件中,最后返回测试套件
        操作: 
            1. 导包
                    import unittest
            2. 调用TestLoader()
                    写法1. suite = unittest.TestLoader().discover("指定搜索的目录文件","指定字母开头模块文件")
                    写法2. suite = unittest.defaultTestLoader.discover("指定搜索的目录文件","指定字母开头模块文件") 【推荐】
                    注意:如果使用写法1,TestLoader()必须有括号。
            3. 执行测试套件
                    unittest.TextTestRunner().run(suite)

测试脚本:

# 导包
import  unittest
# 调用方法
suite = unittest.TestLoader().discover(r"D:\Learn\autoTest\rescource\cases")

# 执行 套件 方法 TextTestRunner
unittest.TextTestRunner().run(suite)

测试效果:

TestSuite与TestLoader区别:
        共同点:都是测试套件
        不同点:实现方式不同
        TestSuite: 要么添加指定的测试类中所有test开头的方法,要么添加指定测试类中指定某个test开头的方法
        TestLoader: 搜索指定目录下指定字母开头的模块文件中以test字母开头的方法并将这些方法添加到测试套件中,最后返回测试套件
 

4.Fixture(固定装置(两个固定的函数,一个初始化时使用,一个结束时使用))

说明:装置函数(setUp、tearDown)
    级别:
        1). 函数级别 def setUp() / def tearDown()
                特性:几个测试函数,执行几次。每个测试函数执行之前都会执行 setUp,执行之后都会执行tearDwon
        2). 类级别 def setUpClass() / def tearDownClass()
                特性:测试类运行之前运行一次setUpClass 类运行之后运行一次tearDownClass
                注意:类方法必须使用 @classmethod修饰
        3). 模块级别:def setUpModule() / def tearDownModule()
                特殊:模块运行之前执行一次setUpModule ,运行之后运行一次tearDownModule
                
    提示:
        无论使用函数级别还是类级别,最后常用场景为:
            初始化:
                1. 获取浏览器实例化对象
                2. 最大化浏览器
                3. 隐式等待
            结束:
                关闭浏览器驱动对象

测试脚本:

import unittest
def setUpModule():
    print("SetUpModule")

def tearDownModule():
    print("tearDownModule")

class Test03(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("setUpClass被执行")

    @classmethod
    def tearDownClass(cls):
        print("tearDownClass被执行")

    def setUp(self):
        print("setUp被执行")

    def tearDown(self):
        print("tearDown被执行")

    def test01(self):
        print("test01被执行")

    def test02(self):
        print("test02被执行")

class Test04(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("setUpClass被执行")

    @classmethod
    def tearDownClass(cls):
        print("tearDownClass被执行")

    def setUp(self):
        print("setUp被执行")

    def tearDown(self):
        print("tearDown被执行")

    def test01(self):
        print("test01被执行")

    def test02(self):
        print("test02被执行")

测试效果:


原文地址:https://blog.csdn.net/jingling555/article/details/142791897

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!