Python自动化测试之数据驱动(一)

2017-08-10 分类:Python 阅读(1873) 评论(0)

全栈测试技术qq群:534390237107394796 与众多大牛一起在技术的海洋里熬翔。
自动化测试在各大互联网公司全面铺开,那么针对于自动化测试好的设计思想有哪些呢?.....今天我们共同探讨下Unittest之数据驱动(DDT)。

对于接口自动化的数据驱动模式是大多数公司所选择的主流设计思想,有通过Mysql实现数据驱动,有通过Excel实现数据驱动,但是客观的认为,都没有Python模块中DDT模块所做的数据驱动方便,灵活。

安装ddt模块

由于ddt不是Python的标准库所以我们需要pip安装ddt模块(注:如果Python的Scripts目录已增加到环境变量,请忽略下方操作,直接pip install ddt安装即可。)

1、打开cmd,输入where python,找到Python的安装路径。

2、切换(cd)到Python的Scripts目录,并执行pip install ddt命令。(注:提示Successfully则为安装成功。)

导入ddt模块

通过Pycharm直接import ddt即可。

结合Unittest使用ddt

导入ddt模块后,按照unittest的正常模式写case,在class上方@ddt的装饰器,在测试的case上@ddt的data方法。

如果将data中的参数变为list、dict、tuple的话,会将参数[1,2]当做一个参数传递给case

当引用了ddt的装饰器后,他会根据data中参数的个数,来执行多少遍case,这就是简单的ddt的应用。当一个测试case中出现多个形参时,只用data装饰器就解决不了问题,如果依旧这么传参,会报错。

在工作中我们的case一定不会只有一个形参,当出现这种多个形参时,需要通过@ddt.unpack方法对数据进行拆分。默认@data([1,2],['a','b']),会将[1,2]看做一个参数传递到case中,增加@ddt.unpack方法后。@data([1,2],['a','b'])将变为两条case,list中1和2,被分解开,按照case的形参进行传递。

当我整理到这里时,发现了ddt的NB之处,这种数据驱动,如果将数据准备全面,我只需要通过@data将数据灌入到case中,他就会根据我的case数量执行用例,那么这在接口测试当中,测一个接口时,多种不同的接口参数组合,通过ddt的数据驱动可以完美的运行case。

如何管理数据成为了我们重中之重的话题,下篇文章我们将讲解结合Python的Pyyaml模块来实现与ddt的完美组合,让数据的存储变的不复杂,反而更加灵活。

您可能也喜欢:

基于协程的异步编程(异步上下文管理器)-5

普通上下文管理器 上下文管理举例来说 比如你想要链接数据,然后自己总忘记关闭连接,就可以使用上下文管理器来实现 可以将获取资源链接放到__enter__中,将资源关闭放到__exit__中。 使用with ContextManager() as f: 就可以自动关闭链接了。实例时会先执行__ente...

more

基于协程的异步编程(Future)-4

Future对象 Future是Task的基类,task内部的await等待通过Future对象实现。 12345678910111213141516171819202122232425262728293031...

more

基于协程的异步编程(Task)-3

TASK对象 task对象用于并发调度协程,实际上就是将任务添加到事件循环中等待这被执行。 可以使用asyncio.create_task()"3.7及以后版本",也可以使用loop.create_task()或者asyncio.ensure_future()。 例子1: ...

more

欢迎新朋友你的到来!
还没有人抢沙发呢~
昵称

登录

忘记密码 ?

切换登录

注册