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

2017-08-16 分类:Python 阅读(1518) 评论(0)

上篇文章我们初探了自动化测试数据驱动的DDT模块,虽然知道如何使用DDT模块了,但是对于DDT模块的数据源,如何存储是一个值得探讨的问题,如果用往常一样的MYSQL或EXCEL存储,对于数据的改动非常不方便,这里我们引用一个第三方类库PyYaml。

安装PyYaml

通过pip install pyyaml进行安装,出现下图则为安装成功。(注:如果出现安装问题,请看Python自动化测试之数据驱动(一)

导入PyYaml

直接import yaml,右键运行py文件,不报错,则为导入成功。

PyYaml简介

YAML是一种容易阅读、适合表示程序语言的数据结构、可用于不同程序间交换数据、丰富的表达能力和可扩展性、易于使用的语言。通过缩进或符号来表示数据类型。

Yaml提供了多种方法,常用的为yaml.load和yaml.dump。

yaml.load([filehandle])

yaml.load接收文件句柄,将yml文件中的数据转为Python的数据类型。

yaml.dump([data,filehandle])

yaml.dump 将一个Python对象生成为yaml文档。参数一为要转为yaml文档的数据,参数二必须为一个已经打开的文件对象。

PyYaml文件编写格式

yaml文档除了可以通过dump进行转化之外,也可以根据yaml文档的格式进行编写。

1、对象的一组键值对,使用冒号结构表示。

2、一组减号开头的行,构成一个list。

3、对象和数组可以结合使用,形成复合结构。

4、~ 代表None

5、布尔类型 直接写bool: True False

DDT与PyYaml组合应用

了解了yaml的基本编写格式后,我们可以将yaml与ddt联合应用,将yaml作为我们的数据存储,通过ddt将case的数据灌入到我们的测试用例中,case的yaml文件编写也是有讲究的。比如下面这样。

通过上面的case设计我们可以看出,一个case我们涵盖了预制操作、请求数据、校验操作、测试数据回收操作。一条case很完整的在yaml文档中进行体现,那么我们在代码中需要如果来处理这些数据呢?请看下图。

这样我们的case逻辑和我们数据逻辑一一对应,保证了我们的case的完整性,以及case的维护我们只需要去更改yaml文档即可。这就是DDT模块与PyYaml组合而来的自动化数据驱动测试。

总结

  1. 组合使用后,节省我们写Python代码case的时间,通过yaml的数据来控制我们的case的执行
  2. yaml文档的使用,使case维护更加方便快捷
  3. 能够体现出数据驱动测试的魅力所在,真正的以数据为导向执行我们的case

您可能也喜欢:

基于协程的异步编程(异步上下文管理器)-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

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

登录

忘记密码 ?

切换登录

注册