美文网首页python
python中数据驱动测试

python中数据驱动测试

作者: gaby666 | 来源:发表于2019-08-03 20:30 被阅读0次

    在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件。这种测试,在功能测试中非常耗费人力物力,但是在自动化中,却比较好实现,只要实现了测试操作步骤,然后将多组测试数据以数据驱动的形式注入,就可以实现了,在java中,我们可以用testng测试框架中的DataProvider注解来实现,在python中,我们也可以实现,来一起看看。

    要实现数据驱动,首先,我们得先实现测试操作步骤。

    image

    我们首先实现一个简单的unittest测试用例,该测试用例实现的是一对明星夫妻的输出,比如男:张国立对应女:邓婕。

    在PyCharm中创建一个名为testsample的文件,在其中创建一个名为Test_sample的class,并集成unittest.TestCase,并在Test_sample中创建一个名为test的方法:

    import unittest

    class Test_ddt(unittest.TestCase):
    def test(self):
    print("############# start #############")
    print("男: 张国立 —> 女: 邓婕" ) # 通过字典的key获取value
    print("############# end #############")

    image

    这是一个简单的测试用例,在实际的测试中,我们会输入多组数据对同一个功能进行测试,接下来,我们用数据驱动来实现多组明星夫妻的输出。

    在unittest中,没有自带的数据驱动,我们得借助ddt来实现,首先,我们得在python运行环境中安装ddt,用下列命令安装

    pip install ddt

    ◆ ◆ ◆ ◆ ◆

    安装之后,我们在刚刚的代码中进行改写,为了创建数据驱动测试,需要在测试类上使用@ddt装饰符,在测试方法上使用@data装饰符。@data装饰符把参数当作测试数据,参数可以是单个值、列表、元组、字典。

    对上面的测试用例进行改写

    import ddt
    import unittest

    data = [{"search": "赵丽颖", "result": "冯绍峰"},
    {"search": "张国立", "result": "邓婕"},
    {"search": "邓超", "result": "孙俪"}]

    @ddt.ddt
    class Test_ddt(unittest.TestCase):
    @ddt.data(*data)
    def test(self, data): # 传参测试数据列表
    print("############# start #############")
    print("男: %s —> 女: %s" % (data["search"], data["result"])) # 通过字典的key获取value
    print("############# end #############")

    ◆ ◆ ◆ ◆ ◆

    在unittest中我们得借助ddt来实现数据驱动,但是对于另外一个测试框架pytest,它自带数据驱动实现,是通过@pytest.mark.parametrize(argnames,argvalues) 来实现参数化的。我们首先来实现一个同样的测试用例。

    在PyCharm中创建一个名为test_sample的文件,在其中创建一个名为Test_sample的class,并在Test_sample中创建一个名为test的方法:

    class Test_ddt():
    def test(self):
    print("############# start #############")
    print("男: 张国立 —> 女: 邓婕" ) # 通过字典的key获取value
    print("############# end #############")

    从上面的步骤可以看出来,pytest中实现测试用例比unittest要简洁很多。在此基础上,我们来实现数据驱动。

    修改代码如下

    测试数据构造

    import pytest

    data = [("张国立", "邓婕"),("邓超","孙俪"),("冯绍峰","赵丽颖"),("绿巨人","黑寡妇")]

    引入数据驱动

    @pytest.mark.parametrize('a,b',data)
    class Test_ddt():
    def test(self, a, b):
    print("############# start #############")
    print("男: %s —> 女: %s" %(a, b) ) # 通过字典的key获取value
    print("############# end #############")

    数据驱动是自动化测试中很重要的一种应用,我们不止要会用它,还需要理解它的思维,它可以帮我们做什么。好了,胖友们,我们下次见。

    相关文章

      网友评论

        本文标题:python中数据驱动测试

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