本文介绍网站登陆功能,未使用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. 对登录功能进行压力测试:

    对登录功能进行压力测试: 测试要求: 1)测试系统能否支持"100 个"用户同时并发登录:即看100个左右用户并发登录时,系统的响应情况是什么样,能否达到我们的要求. 2)登录功能 ...

  2. 测试点击屏幕次数的软件_软件测试工程师面试如何回答登录功能怎么进行测试?...

    测试工程师面试的时候,特别容易会被问到:现在有一个Web页面,有一个登陆功能如下图(这时候给你一个A4纸打印的登陆界面),请问对于登陆功能你要怎么进行测试(或者会问要进行那些方面的测试,或者会问说说都 ...

  3. 【途牛旅游项目】02 - 登录功能实现 - 验证码功能 - ajax实现登录

    文章目录 登录功能分析图解 最终实现截图 实现登录功能 1. 创建测试类 2. 创建业务层UserService 3. 创建实体类 - User用户类和Msg错误提示类 4. 创建dao层 5. 创建 ...

  4. Coded UI Test中的数据驱动测试

    有关什么是Coded UI Test以及如何使用Coded UI Test可以查看我的另一篇文章:http://www.cnblogs.com/jaxu/p/3706652.html 本文主要介绍如何 ...

  5. 登录功能,发现账号密码没有区分大小写???

    开发登录功能时,发现账号密码没有区分大小写??? 问题描述 开发登录功能时,测试发现账号密码竟然没有区分大小写便可登录,顿时脑子一热,查!!! 原因分析 可能情况一:MySQL数据库设置成不区分大小写 ...

  6. C语言学生学籍管理系统源程序|用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(用文件保存) 功能要求: (1) 系统以菜单方式工作。 (2) 登记学生的

    学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作.(用文件保存) 功能要求: (1) 系统以菜单方式工作. (2) 登记学生的学号,姓名, ...

  7. java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理

    1.工厂模式 23种java设计模式之一 1)提供抽象类(基类) 2)提供一些子类,完成方法重写 3)提供一个接口:完成具体子类的实例化对象的创建,不能直接new子类,构造函数私有化. 优点:具体的子 ...

  8. springboot文件上传下载实战 —— 登录功能、展示所有文件

    springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...

  9. facebook登录功能xml文件中application Id的配置问题

    Resources referenced from the manifest cannot vary by configuration(except for version qualifiers, e ...

最新文章

  1. Kotlin基本语法和使用
  2. windows解压tar.gz文件 7z
  3. HDU2699+Easy
  4. 信心满满的去面算法工程师,竟然凉了...
  5. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十一)地图遮罩层的实现
  6. 题目1168:字符串的查找删除(字符串操作)
  7. tensorflow 卷积:设定特定卷积核
  8. WPF 使用自定义的TTF字体
  9. DSP学习笔记——基于TMS320F28335
  10. Arcgis中按照cass标准分幅图框进行批量正射影像DOM分幅裁剪并命名
  11. kettle抽取数据
  12. 测试英语语法的软件,1Checker,一款实用的英语语法检测软件
  13. 企业级数据模型主题域模型划分(NCR FS-LDM)
  14. java程序如何在手机运行_怎么在手机上运行手机JAVA程序
  15. 云计算技术 - 基础环境搭建
  16. oracle中字体倒转,Oracle特殊查询 行列倒转 分页
  17. 技术选型电商平台系统的四大方向
  18. pandas DatetimeIndex indexing
  19. win101909要不要更新_win101909更新了哪些内容?Win10 1909千万别更新原因
  20. 【安卓Framework学习】Wifi框架学习之热点评分机制

热门文章

  1. java redis hash存取_我爱java系列---【redis中如何存取hash类型的值(key field value)】...
  2. java int ==_Java 位运算符和 int 类型的实现
  3. 热榜第一!GitHub 标星 5.6w,用 Python 实现所有算法!
  4. 构建嵌入式版本的 ACE TAO 6.5.3
  5. 妲己机器人怎么升级固件_OnRobot新增爱普生川崎机器人套件、HEX固件升级
  6. 惊呆!骑士一天收入过万?顺丰同城回应:用户打赏约7856元
  7. 北京冬奥会科技感十足多家科技公司助力
  8. 145元!苹果上架一块儿“天价抹布” ,你会买吗?
  9. 国内手机厂商要复活“大哥大” 网友:想买
  10. 全网沸腾!鸿蒙手机要来了