美文网首页软件测试
三步学会用 python+unittest 搭建简易的接口测试框

三步学会用 python+unittest 搭建简易的接口测试框

作者: 梵音11 | 来源:发表于2020-06-11 16:27 被阅读0次

    三步学会用 python+unittest 搭建简易的接口测试框架续集来咯

    目录:

    一、discover模式运行

    二、例子

    三、组织测试用例

    四、跳过测试

    五、数据驱动 DDT

    一、discover模式运行

    支持的命令行参数:

    ● -v, --verbose

    更详细地输出结果。

    ● -s, --start-directory directory

    开始进行搜索的目录(默认值为当前目录 . )。

    ● -p, --pattern pattern

    用于匹配测试文件的模式(默认为 test*.py )。

    ● -t, --top-level-directory directory

    指定项目的最上层目录(通常为开始时所在目录)

    二、例子

    这个是文件目录结构

    1、运行testcases 中所有用例

    python -m unittest discover -s testcases -v

    2、匹配模式运行

    只运行 testcases 目录下以 test_ 开头文件

    python -m unittest discover -v -s testcases -p test_*.py

    三、组织测试用例

    1、加载单个测试用例

    from testcases.test_003 import TestDemo

    from testcases.test004 import Demo4

    import unittest

    “”"

    添加单个测试用例

    “”"

    def suite():

    “”"

    定义测试套件

    :return:

    “”"

    s = unittest.TestSuite() # 管理测试套件的类

    s.addTest(TestDemo(‘test_01’)) # 添加单个测试用例 TestDemo class名 传入 ‘test_01’ test_01 方法名

    s.addTest(Demo4(‘test_02_update_topic’)) # 添加单个测试用例( 共享测试资料,可加我QQ:1844835571)

    return s

    if name == ‘main’:

    runner = unittest.TextTestRunner(verbosity=2) # 创建执行器 设置执行的日志级别为详细日志

    # 获取测试套件

    s = suite()

    # 运行测试套件

    runner.run(s)

    2、 从类中加载多个cases

    def suites():

    s = unittest.TestSuite() # 实例化测试套件类对象

    loader = unittest.TestLoader() # 定义加载器

    cases1 = loader.loadTestsFromTestCase(TestDemo) # 加载器加载 TestCase 类中的所有的测试方法

    cases2 = loader.loadTestsFromTestCase(Demo4)

    s.addTests(cases1)  # 所有的测试方法添加到测试套件中

    s.addTests(cases2)

    return s

    if name == ‘main’:

    runner = unittest.TextTestRunner(verbosity=2)# 创建执行器 设置执行的日志级别为详细日志

    # 获取测试套件

    # s = suite()

    s = suites()

    # 运行测试套件

    runner.run(s)

    3、 从module文件中加载

    def moduleSuite():

    s = unittest.TestSuite()

    loader = unittest.TestLoader()

    cases = loader.loadTestsFromName(‘testcases.test_00

    5’) # 文件路径, 从module中加载所有的TestCase

    s.addTests(cases)

    return s

    if name == ‘main’:

    runner = unittest.TextTestRunner(verbosity=2) # 创建执行器 设置执行的日志级别为详细日志

    # 获取测试套件

    # s = suite()

    s = moduleSuite()

    # 运行测试套件

    runner.run(s)

    四、跳过测试

    ● skip 直接跳过。

    ● skipIf 加上跳过条件。

    ● skipUnless 跳过条件,与if相反。

    “”"

    test fixture 测试脚手架

    “”"

    import unittest

    class Demo5_1(unittest.TestCase):

    “”"

    每个测试用例执行之前和之后的操作

    测试用例级别:

    setUp 定义每个用例运行之前的操作

    tearDown 定义每个用例运行之后的操作

    整个class 级别

    setUpClass 运行class 之前

    tearDownClass 运行class 之后

    """

    def setUp(self) -> None:

        print('运行方法之前')

    def tearDown(self) -> None:

        print("运行方法之后执行")

    @classmethod

    def setUpClass(cls) -> None:

        print('运行类里面所有的case 之前')

    @classmethod

    def tearDownClass(cls) -> None:

        print('运行类里面所有的case 之后')

    def test_run1(self):

        print("现在开始运行run1")

    def test_run2(self):

        print("现在开始运行run2")

    class Demo5_2(unittest.TestCase):

    def testcase1(self):

    assert True

    @unittest.skip('跳过此用例')

    def testcase2(self):

        assert True

    @unittest.skipIf(True, 'skipIf')

    def testcase3(self):

        assert True

    @unittest.skipUnless(False,'skipUnless')

    def testcase4(self):

        assert True

    if name == ‘main’:

    unittest.main(verbosity=2)

    五、数据驱动 DDT

    需要安装ddt 库

    https://ddt.readthedocs.io/en/latest/example.html

    1、快速入门

    @data 将会传入数据

    “”"

    基本使用方式

    “”"

    import unittest

    from ddt import ddt,data

    #在定义类名上面

    @ddt 引入ddt 库@ddt

    class TestDDT1(unittest.TestCase):

    @data(1,2,3,4,5,6)

    def test_01(self,val):  # val 会去取@data中传过来的值

        print('hello world',val)

    if name == ‘main’:

    unittest.main(verbosity=2)

    2、读取数据文件

    https://github.com/datadriventests/ddt/blob/master/test/data/test_data_dict.json

    data/data.json

    {

    “unsorted_list”: [ 10, 12, 15 ],

    “sorted_list”: [ 15, 12, 50 ],

    “tuple_data”: [1,2,3]

    }

    “”"

    基本使用方式

    “”"

    import unittest

    from ddt import ddt,file_data

    #在定义类名上面

    @ddt 引入ddt 库@ddt

    class TestDDT1(unittest.TestCase):

      @file_data('data/data.json')

        def test_02(self,value):

        print(value)

        assert True

    if name == ‘main’:

    unittest.main(verbosity=2)

    data/data2.json

    {

    “positive_integer_range”: {

    “start”: 0,

    “end”: 2,

    “value”: 1

    },

    “negative_integer_range”: {

    “start”: -2,

    “end”: 0,

    “value”: -1

    },

    “positive_real_range”: {

    “start”: 0.0,

    “end”: 1.0,

    “value”: 0.5

    },

    “negative_real_range”: {

    “start”: -1.0,

    “end”: 0.0,

    “value”: -0.5

    }

    }

    import unittest

    from ddt import ddt,file_data

    @ddt

    class TestDDT2(unittest.TestCase):

    @file_data('data/data2.json')

    def test_file_data(self,start,end,value):  # start,end,value 与数据文件保持一致

        print(start,end,value)

        assert True

    if name == ‘main’:

    unittest.main(verbosity=2)

    相关文章

      网友评论

        本文标题:三步学会用 python+unittest 搭建简易的接口测试框

        本文链接:https://www.haomeiwen.com/subject/bxgbtktx.html