Selenium + Python 自动化测试17(数据驱动-文本操作)

news2024/11/17 0:16:45

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

之前有一篇我们讨论了使用模块化测试来优化我们的测试脚本,今天我们试着进一步深入学习数据驱动。

         本篇文章我们讨论一下数据驱动思想,如何将数据和脚本分离出来,更便于维护数据。

现在我们首先讨论一下如何读取文件。

1、准备知识

1)引入数据驱动

我们先看一下之前的测试脚本,登录的这部分:

#输入正确的密码登录成功测试

def test_login_Y(self):

    username = "standard_user"

    password = "secret_sauce"

    print("登录的用户名是:%s,密码是:%s"%(username,password))



    driver=login.Login(username,password).login()



    time.sleep(3)

    #加入断言  //*[@id="header_container"]/div[1]/div[2]/div

    # 验证有显示:Products

    UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text

    self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")

    self.driver=driver


# 输入错误的密码登录失败测试

def test_login_N(self):

    username = "standard_user"

    password = "secret_NG"

    print("登录的用户名是:%s,密码是:%s" % (username, password))

    driver = login.Login(username,password).login()

    time.sleep(3)

    # 加入断言  //*[@id="header_container"]/div[1]/div[2]/div

    # 验证有报错显示:

    UIResult = driver.find_element_by_xpath('//*[@id="login_button_container"]/div/form/div[3]/h3').text

    self.assertEqual("Epic sadface: Username and password do not match any user in this service", UIResult,

                         "密码错误登录验证失败,fail")

    self.driver=driver

         如上所示,我们都用到登录的操作,但是黄色背景部分用户名和密码可能不一致。这里的数据就维护起来就比较麻烦,若是更多时就有很明显的弊端。

2)数据驱动的一般步骤

        编写脚本>准备测试数据到文件或者数据库等外部介质>获取数据>代入数据执行测试,

由以上步骤不难看出,我们首先要学会如何读取文件。如读取Excel文件的内容。

2、读取Excel文件

1)引入xlrd 库

         python 读取Excel文件,需要先安装xlrd 库,可以直接在命令行输入:pip install xlrd

上面的提示说明我们之前已经安装了。

2)编写读取Excel 文件函数
需求:如下图Excel表。通过Excel来获取数据,希望返回字典组成的列表:[{"username":" standard_user","password":"secret_sauce"},
{"username":" visual_user","password":"secret_sauce"},{"username":" error_user","password":"password_NG"}]

编写函数实现如下:

def get_excel_data(filename,sheetnum):

    path = 'login_data.xlsx'

    book_data = xlrd.open_workbook(path) #打开文档

    book_sheet=book_data.sheet_by_index(0) #打开Excel中第一个表

    rows_num = book_sheet.nrows  #sheet1 行数,row:行

    rows0 = book_sheet.row_values(0) #第一行的各个名称作为字典的键,列表

    rows0_num = len(rows0)   #第一行列表的长度即为数据的列数



    data_list = [ ]  #存放读取的数据

    for i in range(1,rows_num):

        rows_data = book_sheet.row_values(i) #取出每一行的值作为列表,列表的每一项为一个字典

        rows_dir ={ }

        for y in range(0,rows0_num):      #将每一列的值与每一行对应起来

            rows_dir[rows0[y]] = rows_data[y] #键值对应

        data_list.append(rows_dir)   #每个字典插入到列表中

    return data_list

输出结果如下,方便后面使用。这里的难点主要是对字典和列表的理解和操作。不熟悉的可以先练习一下这部分再学习编写脚本。

今天就先学习到这里吧。

每天进步一点点,加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper的在Ubuntu20.04上的集群部署

安装资源 官方安装包下载地址:https://zookeeper.apache.org/releases.html 懒得找版本的可以移步下载zookeeper3.84稳定版本: https://download.csdn.net/download/qq_43439214/89646735 安装方法 创建安装路径&&解压安装包 # 创建路径 m…

机器学习之ROC曲线

机器学习之ROC曲线 1.TPR与FPR计算2.TPR、FPR与分类阈值的关系3.生成ROC曲线4.AUC计算参考文献本博客主要参考了https://www.evidentlyai.com/classification-metrics/explain-roc-curve。 1.TPR与FPR计算 真阳率TPR(True Positive rate),又称召回率recall rate。 假阳率F…

AtCoder Beginner Contest 367(ABCDEF题)视频讲解

A - Shout Everyday Problem Statement In the Kingdom of AtCoder, residents are required to shout their love for takoyaki at A A A o’clock every day. Takahashi, who lives in the Kingdom of AtCoder, goes to bed at B B B o’clock and wakes up at C C C o’…

flink车联网项目前篇:项目设计(第64天)

系列文章目录 车联网项目设计 5.1 数仓分层 5.2 数仓主题数据建模数据仓库建模方法论 2.1 关系建模 2.1.1 ER模型 2.1.2 关系模式范式 文章目录 系列文章目录前言5. 车联网项目设计5.1 数仓分层5.2 数仓主题 1. 数据建模2. 数据仓库建模方法论2.1 关系建模2.1.1 ER模型2.1.2 关…

[Meachines] [Medium] TartarSauce Wordpress-gwolle-gb-RFI+tar权限提升+定时器备份文件权限提升

信息收集 IP AddressOpening Ports10.10.10.88TCP:80 $ nmap -p- 10.10.10.88 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open tcpwrappedWordpress & gwolle-gb & RFI $ feroxbuster --url http://10.10.10.88/ $ wpscan --url http://10.…

汽车IVI中控OS Linux driver开发实操(二十五):GPIO设备驱动的上手编写

概述: 1、验证GPIO是否有效。 2、如果有效,则可以从内核GPIO子系统请求GPIO。 3、将GPIO导出到sysfs(这是可选的)。 4、设置GPIO的方向 5、如果将GPIO设置为输出引脚,则将其设置为高/低。 6、设置去抖动间隔,如果将其设置为输入引脚,则读取状态。您还可以为边缘/级别触…

图像直方图计算

1. 图像直方图(Image histogram) 图像直方图,又叫影像直方图,是一种用来表现数位影像中像素分布的直方图,根据统计影像中不同亮度的像素总数,我们可以画出一张代表这张影像的影像直方图,透过这…

排序算法【快速排序】

一、快速排序算法原理 直接采用实际的例子解释原理&#xff0c;实际的数组如下图所示。 排序算法流程如下所示 然后按照上面顺序递归下去&#xff0c;直到排序完成推出。 二、算法代码 #include <stdio.h> #include "test.h"/* 快速排序算法 */ void quick_s…

Camera基础知识系列(1)——凸\凹透镜

目录 前言 一. 凸\凹透镜 1 凸透镜 1.1 凸透镜成像 1.2 物距\像距 1.3 凸透镜成像规律 2. 凹透镜 2.1 凹透镜成像规律 二. 相机 相机镜头 前言 平日里总是时不时地听到别人讲起一些摄影相关的术语&#xff0c;比如&#xff1a;光圈、焦距、等效焦距、EV、画幅、景深、快门…

使用Qdrant+FastText实现向量存储和检索

1 概述 在《使用FastText库训练词向量》一文中&#xff0c;已经训练并保存好了一个用 FastText 训练的词向量模型-model_0809_001。在接下来的实践中&#xff0c;将直接使用该词向量模型来生成对应数据的向量&#xff0c;然后将向量和对应的负载存储到 Qdrant 中&#xff0c;然…

基于Conda的Python版本管理与Python包管理

文章目录 前言Conda是什么Conda与Anaconda安装Anaconda安装包windows v2024.06-1安装包更多版本安装包(Windows/Mac/Linux) 安装 使用步骤创建Python环境激活Python环境安装Python包列出和切换 Python 版本管理多个环境 总结 前言 开发环境中&#xff0c;需要使用不同的Python…

eNSP 华为三层交换机配置DHCP

华为三层交换机配置DHCP 华为DHCP原理&#xff1a;&#xff08;思科四个都是广播包&#xff09; 1、客户端广播发送DHCP Discover包。用于发现当前局域网中的DHCP服务器。 2、DHCP服务器单播发送DHCP Offer包给客户端。携带分配给客户端的IP地址。 3、客户端广播发送DHCP Resqe…

如何给Airtest脚本/报告增加log记录

1. 前言 尽管Airtest脚本运行过程中会输出非常丰富的log信息&#xff0c;并且Airtest报告也会把我们脚本的的运行步骤显示出来&#xff0c;但有时候&#xff0c;我们会需要在脚本里面&#xff0c;插入一些自定义的log内容&#xff08;比如某些关键点&#xff09;&#xff0c;并…

UR5e机器人Gazebo仿真模拟

Gazebo仿真环境 Gazebo是一款开源的机器人仿真平台&#xff0c;基于物理引擎&#xff0c;能够模拟机器人在真实世界中的运动和交互。它支持多种机器人模型与传感器&#xff0c;以及丰富的环境场景&#xff0c;为机器人研发提供了便捷的测试平台。 UR5e机器人Gazebo仿真模拟步骤…

基于Windows系统和‌Linux系统,以tomcat为案例,讲解如何新增自启动服务。

文章目录 引言‌I Linux系统‌(以CentOS为例)基础知识:运行级别(run level)基于chkconfig 工具,设置服务启动类型。基于systemctl 新增系统服务制定定时任务优化停止Tomcat服务命令II 基于Windows系统设置服务自启动的常规操作安装多个tomcat服务,并设置自启动。引言 场景…

IDEA中@Test测试时无法通过键盘输入

在IDEA中使用Test发现Scanner无法在控制台输入&#xff0c;如下所示&#xff1a; 发现这里是只读模式&#xff0c;无法进行输入。 解决方案&#xff1a; 找到编辑虚拟机选项&#xff0c;添加如下&#xff1a; -Deditable.java.test.consoletrue 如下所示:(重启一次IEDA)

R语言统计分析——多元线性回归

参考资料&#xff1a;R语言实战【第2版】 1、多元线性回归 当预测变量不止一个时&#xff0c;简单线性回归就变成了多元线性回归。从技术上来说&#xff0c;多项式回归可以算是多元线性回归的特例&#xff1a;二次回归有两个预测变量&#xff08;X和X^2&#xff09;。 以基础包…

使用DOM破坏启动xss

实验环境&#xff1a; Lab: Exploiting DOM clobbering to enable XSS | Web Security Academy (portswigger.net) 分析&#xff1a; 找破坏点&#xff1a; 第一个输入框可以看见是<texarrea>;不能插入语句.&#xff1a; 构造一个语句试试 <img src1 οnerrοraler…

深入理解HTTPS协议:CA证书的安全机制

文章目录 一、HTTP的不足二、HTTP 加密 证书 完整性保护 HTTPS三、加密与解密1、对称密钥加密2、非对称密钥加密3、证书 一、HTTP的不足 HTTP 主要有这些不足&#xff0c;例举如下&#xff1a; 通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能会被窃听不…

kettle获取URL接口数据

使用kettle获取URL接口数据结果保留到文件里 1 生成记录里添加URL信息 2 使用Rest_Client组件处理URL数据结果保存到字段里&#xff08;json的&#xff09; 3 使用json_input 组件处理json数据 4 保存结果到文件里