seldom之数据驱动

如果自动化某个功能,测试数据不一样而操作步骤是一样的,那么就可以使用参数化来节省测试代码。

seldom是我在维护一个Web UI自动化测试框,这里跟大家分享seldom参数化的实现。

GitHub:https://github.com/SeldomQA/seldom

参数化测试用例


import seldom
from seldom import data class BaiduTest(seldom.TestCase): @data([
("case1", "seldom"),
("case2", "selenium"),
("case3", "unittest"),
])
def test_baidu(self, name, keyword):
"""
参数化测试用例
:param name: 用例名称
:param keyword: 搜索关键字
"""
self.open("https://www.baidu.com")
self.type(id_="kw", text=keyword)
self.click(css="#su")
self.assertTitle(keyword+"_百度搜索") if __name__ == '__main__':
seldom.main()

通过@data() 装饰器来参数化测试用例,用法非常简单。

将测试数据写代码里面并不是特别优雅的方式,尤其在数据比较多长时间。那么通过数据文件管理可能会更加优雅。

读取csv文件

seldom支持csv文件的数据解析为 list。

读取CSV文件中的数据。

import seldom
from seldom import data
from seldom import csv_to_list class YouTest(seldom.TestCase): @data(csv_to_list(file="data.csv", line=2))
def test_login(self, username, password):
"""a simple test case """
self.open("https://login.xxx.com")
self.type(id_="user", text=username)
self.type(id_="pawd", text=password)
# ...

csv_to_list() 方法CSV文件内容转化为list。

  • file: 指定csv测试文件。
  • line: 指定从第几行开始读取,默认第一行。

CSV文件不支持多个Sheet,这就要求一个组数据必须创建一个单独JSON文件,如果数据多了之后就需要创建许多单独的JSON文件,这就不太方便了。

读取excel文件

seldom支持excel文件的数据解析为list。

Excel文件可以创建多个Sheet标签,通过不同的标签管理数据。

import seldom
from seldom import data
from seldom import excel_to_list class YouTest(seldom.TestCase): @data(excel_to_list(file="data.xlsx", sheet="login", line=2))
def test_login(self, username, password):
"""test login"""
self.open("https://login.xxx.com")
self.type(id_="user", text=username)
self.type(id_="pawd", text=password) @data(csv_to_list(file="data.xlsx", sheet="search", line=2))
def test_search(self, keyword):
"""test search """
self.open("https://www.baidu.com")
self.type(id_="kw", text=keyword)

excel_to_list() 方法excel文件数据转化为list。

  • file : 指定excel文件的绝对路径。
  • sheet: 指定excel的标签页,默认名称为 Sheet1。
  • line : 指定从第几行开始读取,默认第一行。

#### 读取JSON文件

seldom支持将JSON文件的数据解析为 list/dict。

json 文件:

{
"search":[
["python"],
["seldom"],
["unittest"]
],
"login": [
["admin", "admin123"],
["guest", "guest123"]
]
}

一个JSON文件里面同样可以表示不同格式的的文件。

import seldom
from seldom import data
from seldom import json_to_list class YouTest(seldom.TestCase): @data(json_to_list(file="data.json", key="login"))
def test_login(self, username, password):
"""test login """
self.open("https://login.xxx.com")
self.type(id_="user", text=username)
self.type(id_="pawd", text=password) @data(csv_to_list(file="data.json", key="search"))
def test_search(self, keyword):
"""test search """
self.open("https://www.baidu.com")
self.type(id_="kw", text=keyword)

json_to_list() 方法JSON文件数据转化为list/dict。

  • file : 指定JSON文件的绝对路径。
  • key: 指定字典的key,默认不指定解析整个JSON文件。

使用第三方ddt

seldom也支持第三方ddt库。

GitHub:https://github.com/datadriventests/ddt

安装:

> pip install ddt

创建测试文件test_data.json

{
"test_data_1": {
"word": "seldom"
},
"test_data_2": {
"word": "unittest"
},
"test_data_3": {
"word": "selenium"
}
}

在 seldom 使用ddt

import seldom
from ddt import ddt, file_data @ddt
class YouTest(seldom.TestCase): @file_data("test_data.json")
def test_case(self, word):
"""a simple test case """
self.open("https://www.baidu.com")
self.type(id_="kw", text=word)
self.click(css="#su")
self.assertTitle(word + "_百度搜索") if __name__ == '__main__':
seldom.main()

更多的用法请查看ddt文档:https://ddt.readthedocs.io/en/latest/example.html

seldom之数据驱动的更多相关文章

  1. seldom 2.0 让接口自动化测试更简单

    前言 HTTP接口测试很简单,不管工具.框架.还是平台,只要很的好的几个点就是好工具. 测试数据问题:比如删除接口,重复执行还能保持结果一致,必定要做数据初始化. 接口依赖问题:B接口依赖A的返回值, ...

  2. seldom 1.0 发布

    seldom 是我几个月前重启的Web UI 自动化开源项目,源项目名 pyse, 基于 unittest 和 selenium 的自动化测试框架. seldom 1.0 做为第一个正式版做了以下改进 ...

  3. ABP中单元测试的技巧:Mock和数据驱动

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:虽然ABP为大家提供了测试的脚手架了,不过有些小技巧还是需要自己探索的. ASP.NE ...

  4. java分享第十八天( JAVA利用enum结合testng做数据驱动示例)

    数据驱动是做自动化测试中很重要的一部分,数据源的方案也是百花八门了,比如利用外部文件,直接在@DataProvider中写死等等,我们今天介绍一下利用enum来做数据源,先来看一下enum的写法: p ...

  5. java分享第十八天-02( java结合testng,利用XML做数据源的数据驱动)

    testng的功能很强大,利用@DataProvider可以做数据驱动,数据源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本.在这以XML为例:备注:@DataProvider的返回值类 ...

  6. 【工业串口和网络软件通讯平台(SuperIO)教程】六.二次开发导出数据驱动

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    导出数据接口的作用 在数据集成系统项目中,要么是自已集成其他厂家的设备,要么是其他厂家集成自己 ...

  7. SQL Server 2008 标准版不支持Reporting Services的数据驱动订阅

    今天开发同事找我,说为什么Reporting Services服务器的报表管理的订阅选项里面只有"新建订阅"选项, 没有"数据驱动订阅"选项,说实话,我也基本上 ...

  8. Testng之使用@DataProvider注解做数据驱动【转】

    原文:http://www.jianshu.com/p/8e333a0ec42a 前两天学了一下@DataProvider,今天有时间总结一下.testng很强大,提供了很多注解,其中利用@DataP ...

  9. Unity3d使用经验总结 数据驱动篇

    我这里说的数据驱动,不是指某种框架,某种结构,或者某种编码方式. 我要说的,是一种开发方式. 大家都知道,U3D中,我们可以为某个对象编写一个脚本,然后将这个脚本挂在对象上,那这个对象就拥有了相应的能 ...

随机推荐

  1. python3的数据类型转换问题

    问题描述:在自我学习的过程中,写了个登陆,在input处,希望能够对数据类型进行判断,但是因为python3的输入的数据会被系统默认为字符串,也就是1,1.2,a.都会被系统默认为字符串,这个心塞啊, ...

  2. 吴裕雄--天生自然 R语言开发学习:广义线性模型

    #----------------------------------------------# # R in Action (2nd ed): Chapter 13 # # Generalized ...

  3. SVN图标含义说明

    最经都在用Svn,对他上面的很多状态图标不是很理解,看了看它的帮助文档,说的很清楚,特地截张图.    Svn不同状态图标及说明 - 简单 - 简单  Normal  A fresh checked ...

  4. tips [ 18870 ]

    Created at 2017-08-23 Updated at 2018-01-31 Category 东方大陆 Tag 东方大陆 上面有编辑时间的,别吐槽说什么过期内容了使用 lightPIC图床 ...

  5. JavaScript值类型和引用类型有哪些

    JavaScript值类型和引用类型有哪些 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数.

  6. 网络字体反爬之pyspider爬取起点中文小说

    前几天跟同事聊到最近在看什么小说,想起之前看过一篇文章说的是网络十大水文,就想把起点上的小说信息爬一下,搞点可视化数据看看.这段时间正在看爬虫框架-pyspider,觉得这种网站用框架还是很方便的,所 ...

  7. Scheme实现数字电路仿真(3)——模块

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/12242650.html 作者:窗户 ...

  8. 10——PHP中的两种数组【索引数组】与【关联数组】

    [索引数组] 用数字作为键名的数组一般叫做索引数组.用字符串表示键的数组就是下面要介绍的关联数组.索引数组的键是整数,而且从0开始以此类推. 索引数组初始化例: <pre name=" ...

  9. 达拉草201771010105《面向对象程序设计(java)》第七周学习总结

    达拉草201771010105<面向对象程序设计(java)>第七周学习总结 实验七继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符 ...

  10. 关于图数据库HugeGraph的百万,千万,亿量级测试

    1.Hugegraph测试硬件 1.1.本机硬件 本机测试hugeGraph版本:0.10.4 后置存储数据库:rocksdb,1TB的普通硬盘 1.2.测试服务器硬件 测试服务器hugegraph版 ...