不同文件实现登录功能的数据驱动测试
本文介绍网站登陆功能,未使用ddt思想前每次登陆数据都重新写一遍代码,造成代码冗余,与我们设计初衷相悖。
整篇文章从以下几个方面介绍不同格式的数据怎样利用ddt数据的思想实现登录功能。
- 什么是DDT思想
- 登录流程
- 未使用DDT实现登录功能
- 数据脚本在代码中实现DDT
- 数据脚本在CSV文件中实现DDT
- 数据脚本在json文件中实现DDT
- 数据脚本在excel文件中实现DDT
- 数据脚本在ddt模块中实现DDT
DDT思想
数据驱动测试是指使用相同的测试用例,但是每次都使用不同的测试数据,进行的一种测试。这些测试数据,通常来自于外部,如.csv文件,.xsl文件,文本文件,或者来自数据库。数据驱动测试是一种最常见的自动化测试技术,用于在许多不同的输入中验证应用程序。
举个例子:
比如去超时买东西结账的流程,只是买的东西不同,从选购到结算整个流程都是相同的,通过DDT思想可以把买的商品都统一放到一个文件中,统一进行结账操作。
登录流程
1.本机访问地址http://localhost:8888/jpress/user/login
2.输入用户名和密码(错误、正确)
3.点击登录按钮
4.判断是否登录成功
未使用DDT实现登录功能
分别定义两个函数实现登录流程,登录成功和登录失败,测试数据放在函数内部。
如下面代码所示:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECfrom time import sleepfrom selenium import webdriver
import pytest
class TestUserLogin(object):def setup_class(self):self.driver=webdriver.Chrome()self.driver.get('http://localhost:8888/jpress/user/login')self.driver.maximize_window()#用户名、密码错误def test_user_logon_username_error(self):#测试数据username=''pwd='123456'expected='账号不能为空'self.driver.find_element_by_name('user').send_keys(username)self.driver.find_element_by_name('pwd').send_keys(pwd)self.driver.find_element_by_class_name('btn').click()WebDriverWait(self.driver,5).until(EC.alert_is_present())alert=self.driver.switch_to.alertsleep(3)assert alert.text==expectedalert.accept()def test_user_logon_username_pass(self):#测试数据username='wx1'pwd='123456'expected='用户中心'self.driver.find_element_by_name('user').send_keys(username)self.driver.find_element_by_name('pwd').clear()self.driver.find_element_by_name('pwd').send_keys(pwd)self.driver.find_element_by_class_name('btn').click()WebDriverWait(self.driver,5).until(EC.title_is(expected))sleep(3)assert self.driver.title==expectedself.driver.quit()if __name__ == '__main__':pytest.main()
数据脚本在代码中
增加如下代码
login_data=[ ('','123456','账号不能为空') , ('wx1','123456','用户中心') ] @pytest.mark.parametrize('username,pwd,expected',login_data)
1.之前是2个登录用例改写为一个
2.断言通过用户名进行判断
重构完成后代码
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from time import sleep from selenium import webdriver
import pytest
class TestUserLogin(object): #测试数据 login_data=[ ('','123456','账号不能为空') , ('wx1','123456','用户中心') ] def setup_class(self): self.driver=webdriver.Chrome() self.driver.get('http://localhost:8888/jpress/user/login') self.driver.maximize_window() #测试用户登录 @pytest.mark.parametrize('username,pwd,expected',login_data) #实现登录 def test_user_logon_username_pass(self,username,pwd,expected): self.driver.find_element_by_name('user').clear() self.driver.find_element_by_name('user').send_keys(username) self.driver.find_element_by_name('pwd').clear() self.driver.find_element_by_name('pwd').send_keys(pwd) self.driver.find_element_by_class_name('btn').click() #断言判断 if username=='': WebDriverWait(self.driver, 5).until(EC.alert_is_present()) alert = self.driver.switch_to.alert sleep(3) assert alert.text == expected alert.accept() else: WebDriverWait(self.driver,5).until(EC.title_is(expected)) sleep(3) assert self.driver.title==expected self.driver.quit() if __name__ == '__main__': pytest.main()
后面的内容更精彩!
最后: 给大家推荐一个 q 群:902061117 里面有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测
试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果对你有一点点帮助,各位的「点赞」就是小编创作的最大动力,我们下篇文章见!
好文推荐
2021软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!
什么样的人适合从事软件测试工作?
软件测试和软件开发哪个发展更好
那个准点下班的人,比我先升职了…
不同文件实现登录功能的数据驱动测试相关推荐
- 对登录功能进行压力测试:
对登录功能进行压力测试: 测试要求: 1)测试系统能否支持"100 个"用户同时并发登录:即看100个左右用户并发登录时,系统的响应情况是什么样,能否达到我们的要求. 2)登录功能 ...
- 测试点击屏幕次数的软件_软件测试工程师面试如何回答登录功能怎么进行测试?...
测试工程师面试的时候,特别容易会被问到:现在有一个Web页面,有一个登陆功能如下图(这时候给你一个A4纸打印的登陆界面),请问对于登陆功能你要怎么进行测试(或者会问要进行那些方面的测试,或者会问说说都 ...
- 【途牛旅游项目】02 - 登录功能实现 - 验证码功能 - ajax实现登录
文章目录 登录功能分析图解 最终实现截图 实现登录功能 1. 创建测试类 2. 创建业务层UserService 3. 创建实体类 - User用户类和Msg错误提示类 4. 创建dao层 5. 创建 ...
- Coded UI Test中的数据驱动测试
有关什么是Coded UI Test以及如何使用Coded UI Test可以查看我的另一篇文章:http://www.cnblogs.com/jaxu/p/3706652.html 本文主要介绍如何 ...
- 登录功能,发现账号密码没有区分大小写???
开发登录功能时,发现账号密码没有区分大小写??? 问题描述 开发登录功能时,测试发现账号密码竟然没有区分大小写便可登录,顿时脑子一热,查!!! 原因分析 可能情况一:MySQL数据库设置成不区分大小写 ...
- C语言学生学籍管理系统源程序|用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(用文件保存) 功能要求: (1) 系统以菜单方式工作。 (2) 登记学生的
学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作.(用文件保存) 功能要求: (1) 系统以菜单方式工作. (2) 登记学生的学号,姓名, ...
- java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理
1.工厂模式 23种java设计模式之一 1)提供抽象类(基类) 2)提供一些子类,完成方法重写 3)提供一个接口:完成具体子类的实例化对象的创建,不能直接new子类,构造函数私有化. 优点:具体的子 ...
- springboot文件上传下载实战 —— 登录功能、展示所有文件
springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...
- facebook登录功能xml文件中application Id的配置问题
Resources referenced from the manifest cannot vary by configuration(except for version qualifiers, e ...
最新文章
- Kotlin基本语法和使用
- windows解压tar.gz文件 7z
- HDU2699+Easy
- 信心满满的去面算法工程师,竟然凉了...
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十一)地图遮罩层的实现
- 题目1168:字符串的查找删除(字符串操作)
- tensorflow 卷积:设定特定卷积核
- WPF 使用自定义的TTF字体
- DSP学习笔记——基于TMS320F28335
- Arcgis中按照cass标准分幅图框进行批量正射影像DOM分幅裁剪并命名
- kettle抽取数据
- 测试英语语法的软件,1Checker,一款实用的英语语法检测软件
- 企业级数据模型主题域模型划分(NCR FS-LDM)
- java程序如何在手机运行_怎么在手机上运行手机JAVA程序
- 云计算技术 - 基础环境搭建
- oracle中字体倒转,Oracle特殊查询 行列倒转 分页
- 技术选型电商平台系统的四大方向
- pandas DatetimeIndex indexing
- win101909要不要更新_win101909更新了哪些内容?Win10 1909千万别更新原因
- 【安卓Framework学习】Wifi框架学习之热点评分机制
热门文章
- java redis hash存取_我爱java系列---【redis中如何存取hash类型的值(key field value)】...
- java int ==_Java 位运算符和 int 类型的实现
- 热榜第一!GitHub 标星 5.6w,用 Python 实现所有算法!
- 构建嵌入式版本的 ACE TAO 6.5.3
- 妲己机器人怎么升级固件_OnRobot新增爱普生川崎机器人套件、HEX固件升级
- 惊呆!骑士一天收入过万?顺丰同城回应:用户打赏约7856元
- 北京冬奥会科技感十足多家科技公司助力
- 145元!苹果上架一块儿“天价抹布” ,你会买吗?
- 国内手机厂商要复活“大哥大” 网友:想买
- 全网沸腾!鸿蒙手机要来了