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. 基于Jquery的textarea滚动条插件(原创)

    之前项目中自己写的滚动条插件.先前太忙没有好好整理.现在项目间歇期拿出来整理后贴出来 Demo Here css 我是把mCustomScrollbar 的UI 扣下来的. 这里我要介绍下这个插件不错 ...

  2. windows版 Sublime Text 2 快捷键

    ucifr 翻译了 Sublime Text 2 快捷键 Mac版,用win系统的哥们表示伤不起啊~ 今天把windows版 Sublime Text 2 快捷键 整理了出来,与众兄弟们分享: Ctr ...

  3. Java程序、JSP以及JavaScript中如何判断某个字符串是否包含某个子串

    1.JSP str:原始字符串, subStr:要查找的子字符串 <c:if test="${fn:contains(str,subStr)==true}"> < ...

  4. StringUtil中isBlank(),idNUll,isEmpty的区别

    StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 ...

  5. android编译架构之添加C项目

    1.  增加一个项目与android编译中枢息息相关.特别需要告诉编译中枢的一些特别信息. 例如: A 这个项目target名字是什么 B 这个项目编译类型是什么,bin?c?lib?or jar? ...

  6. 初识Spring JdbcTemplate

    JdbcTemplate 概述 JdbcTemplate是Spring提供的一个模板类,它是对jdbc的封装.用于支持持久层的操作.具有简单,方便等特点. pom.xml <!--依赖版本--& ...

  7. python 临时文件

    1. TemporaryFile 临时文件 TemporaryFile 不在硬盘上的生成真正文件,而是写在内存中 from tempfile import TemporaryFile # , Name ...

  8. LeetCode--链表2-双指针问题

    LeetCode--链表2-双指针问题 思考问题: 判断一个链表是否有环 列举几种情况: graph LR A-->B B-->C C-->D D-->E E-->C g ...

  9. APPium+Python+iOS屏幕滑动方法对比

    最近在学习appium自动化,对iOS手机进行滑动操作进行总结: 1.mobile:scroll;该方法在实际使用调用时,会滚动2次.执行时间很长. 向下滚动整个屏幕driver.execute_sc ...

  10. CSS3实现一个旋转的花朵

    要效果图如下: 实现原理:其实很简单,就是中间的圆圈定位在中间,其他的6个圆圈,进行不同的绝对定位,然后进行旋转!代码: <!DOCTYPE html> <html lang=&qu ...