Python自动化测试框架——数据驱动(从代码中读取)
今天小编要介绍的是数据驱动最简单和最常用的一种方法,由于只是介绍方法,代码操作后的美观程度略有缺陷,介意者可以自行改动
还是以163邮箱登录为例:
设计一个存放数据的类,这个类的参数是我们需要修改的数据,然后再类外传入数据
class Data(object):
def __init__(self,userName='',userPsw=''):
self.userName=userName
self.userPsw=userPsw u1=Data(userName="xxx1",userPsw="xxx1")
u2=Data(userName="xxx2",userPsw="xxx2")
设计登录方法,这个方法在之前小编已经介绍过,本次仅对其中的代码稍作更改
#给login方法增加一个参数,用于接受用户的登录信息
def login(user):
#定位
name = driver.find_element_by_id("op_email3_username")
password = driver.find_element_by_class_name("op_email3_password")
#清空,用clear清空输入框,因为sendkeys方法是在输入框中添加内容,若输入框已有内容,则会在原有内容的基础上加上新增内容
name.clear()
password.clear()
'''
传参
调用user存储的信息
'''
name.send_keys(user.userName)
password.send_keys(user.userPsw)
#登录
login = driver.find_element_by_css_selector(".c-btn")
login.click()
#切换回主窗口
driver.switch_to.window(driver.current_window_handle)
最后,调用login方法,实现数据驱动自动化测试的运行。
login(u1)
login(u2)
在代码中使用数据驱动,可以实现数据和方法的分离,在增加和修改数据的时候,只需要改变用户信息(u1=Data(userName="xxx1",userPsw="xxx1"))部分,和最后的login调用即可,可增加测试脚本的稳定性和可扩展性。
源码奉上,敬请指正:
from selenium import webdriver
import time,unittest
# 打开百度
driver = webdriver.Firefox()
driver.implicitly_wait(5)
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("163邮箱登录")
driver.find_element_by_id("su").click() class Data(object):
def __init__(self,userName='',userPsw=''):
self.userName=userName
self.userPsw=userPsw u1=Data(userName="",userPsw="wsz768950")
u2=Data(userName="xxx",userPsw="xxx") #给login方法增加一个参数,用于接受用户的登录信息
def login(user):
#定位
name = driver.find_element_by_id("op_email3_username")
password = driver.find_element_by_class_name("op_email3_password")
#清空,用clear清空输入框,因为sendkeys方法是在输入框中添加内容,若输入框已有内容,则会在原有内容的基础上加上新增内容
name.clear()
password.clear()
'''
传参
调用user存储的信息
'''
name.send_keys(user.userName)
password.send_keys(user.userPsw)
#登录
login = driver.find_element_by_css_selector(".c-btn")
login.click()
#切换回主窗口
driver.switch_to.window(driver.current_window_handle) login(u1)
time.sleep(5)
login(u2) time.sleep(10)
driver.quit()
数据驱动
Python自动化测试框架——数据驱动(从代码中读取)的更多相关文章
- Python自动化测试框架——数据驱动(从文件中读取)
学过编程的伙伴们都知道,数据不仅可以从代码中读取,还可以从文件中读取. 今天小编就简要的介绍一下从文件中读取数据,并应用到自动化测试中方法. 先来展示下接下来将要用到的文件在项目中的结构 从txt文件 ...
- Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)
1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现.由于时间的关系,宏哥这里用代码给小伙伴演示两个模块:注册和登录. 2.业务模块封装 因为现在各种APP的层出不群 ...
- Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
简介 经过一段时间的准备,完善的差不多了,继续分享有关Appium自动化测试框架综合实践.想必小伙伴们有点等不及了吧! driver配置封装 kyb_caps.yaml 配置表 参考代码 platfo ...
- 【转】推荐4个不错的Python自动化测试框架
之前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架.一个测试框架应该具有最佳的测试用例.假设(assumptions).脚本和技术来运行每一 ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- (原创)Python 自动化测试框架详解
自己折腾了一个python的自动化测试框架,梳理了一下流程,简单分享一下. 项目背景 B/S架构,进行用户界面的自动化测试 工具选择 python开发的自动化测试框架,足够灵活,可以随时根据需求进行变 ...
- Selenium WebDriver + python 自动化测试框架
目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤.检查点,然后执行自动化工程,即可执行功能自动化测试用例 ...
- python自动化测试框架学习
今天发现python有多个框架可以用于自动化测试方面,下面整理了下splinter和urllib2框架,对于pywinauto框架和ruby框架先记录下以后需要用到再学习. python有个splin ...
- python自动化测试框架unittest
对于刚学习python自动化测试的小伙伴来说,unittest是一个非常适合的框架: 通过unittest,可以管理测试用例的执行,自动生成简单的自动化测试报告: 首先我们尝试编写编写一个最简单的un ...
随机推荐
- performSegueWithIdentifier 不生效的解决办法
相信很多人都会遇到这样的需求: APP 打开以后,判断用户是否登录,如果未登录,就跳转到登陆页. 今天我也遇到了这个需求,发现我封装的一个 `func checkLoginStatus()` 放在 ` ...
- C#字符串判断
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 生成Jar包 源码Jar包-字节码Jar包 不可运行Jar包-可运行Jar包
- Python常用模块之hashlib(加密)
Python常用模块之hashlib(加密) Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据import ha ...
- 一图秒懂http与https的区别
HTTPS与HTTP的一些区别 HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费. HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS ...
- WORDPRESS下载按钮调整
- android开发学习 ------- 自定义View 圆 ,其点击事件 及 确定当前view的层级关系
我需要实现下面的效果: 参考文章:https://blog.csdn.net/halaoda/article/details/78177069 涉及的View事件分发机制 https://www. ...
- 洛谷[LnOI2019]长脖子鹿省选模拟赛t1 -> 快速多项式变换
快速多项式 做法:刚拿到此题有点蒙,一开始真没想出来怎么做,于是试着去自己写几个例子. 自己枚举几种情况之后就基本看出来了,其实本题中 n 就是f(m)在m进制下的位数,每项的系数就是f(m)在m进制 ...
- Mysql如何为表字段添加索引???
1.添加PRIMARY KEY(主键索引): ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) : ALTE ...
- Servlet和JSP之有关Servlet和JSP的梳理(一)
大二第一学期的时候有学JSP的课,但是因为在开学之前做过JSP的小项目,所以一个学期的课也没听,直到期末考试成绩出来了,才回想JSP的内容还有多少记得,没想到模模糊糊也记不起多少,赶紧回头学回来.接下 ...