Python接口自动化测试 —— Selenium+pytest+数据驱动

主流自动化框架

selenium :web端自动化框架 ,(行业里面最核心的框架)
appium :手机app端框架
requests :接口测试

selenium 工具类封装

selenium提供了很多方法供我们去完成网页元素的操作, 在实际开发中,我们的变量只有元素定位 和对元素的操作,其他的都是重复的,为了减少代码量,我们需要将selenium进行二次封装,这就是工具类。工具类就是我们的工具箱,里面的方法就是我们的工具

创建常用工具

创建一个模块 在项目文件夹下面创建一个模组 new ->Python Package

系统会生成一个带init文件的python 框架文件夹

from time import sleepclass WebKeys:def __init__(self):self.driver = webdriver.Chrome()# 访问urldef open(self, url):self.driver.get(url)# 退出def quit(self):self.driver.quit()# 元素定位def locator(self, name, value):return self.driver.find_element(name, value)# 输入框功能def input(self, name, value, txt):el = self.locator(name, value)el.clear()el.send_keys(txt)`
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

pytest 编写测试用例并进行测试

导入pytest框架
pytest框架集成了众多方法方便我们对测试用例进行测试,高效,易用,可以节省大量工作 pytest的测试用例必须以test命名 文件如下

import pytest
from time import *
from data_driver import yaml_driver@pytest.mark.parametrize('data', yaml_driver.load_yaml('../data/baidu.yaml'))
def test_login(data):wk = WebKeys()wk.open(data['url'])wk.input(data["name"], data["value"], data["txt"])sleep(3)wk.quit()if __name__ == '__main__':pytest.main()

数据驱动

当我们的测试用例很多的时候我们需要写很多次用例,利用数据化驱动,就可以节省很多时间 公司常用的有yaml库
1,利用pip导入yaml 同样的我们要对这个yaml模块进行二次封装,方便我们调用

def load_yaml(path):file = open(path, 'r', encoding='utf-8')data = yaml.load(file, Loader=yaml.FullLoader)return data

新建一个文件夹用来专门放测试用例数据
新建一个yaml文件然后按正确格式将数据放到里面

-url: http://www.baidu.comname: xpathvalue: //*[@id="kw"]txt: 狗
-url: http://www.baidu.comname: xpathvalue: //*[@id="kw"]txt: 鸡
-url: http://www.baidu.comname: xpathvalue: //*[@id="kw"]txt: 牛
-url: http://www.baidu.comname: xpathvalue: //*[@id="kw"]txt: 马

注意这个 - 以及后面url必须在-右下方,否则系统会报文件对齐错误

在测试用例代码里面有这样一行代码,这其实就是调用我们封装的yaml类,并返回一个变量列表data变量 @pytest.mark.parametrize('data', yaml_driver.load_yaml('../data/baidu.yaml')) ../表示跳到父目录,然后在通过路径找到yaml文件 在测试用例里面我们只需要给一个方法指定这个data变量,方法就会被执行四次 相当于写了四个用例

if __name__ == '__main__':pytest.main()

这个pytest.main函数里面有很多参数,方便我们根据自己的需要去调用

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

延迟队列

KEYS命令和SCAN命令都可以用于在Redis中查找匹配指定模式的键名,但它们之间有以下区别: 1. 阻塞 vs 非阻塞:KEYS命令是一个阻塞操作,它会遍历整个键空间来查找与给定模式匹配的键名。在执行KEYS命令期间,Redis服务器会…

Gitlab+Jenkins自动化部署,解放双手

项目打包 ​ 在部署项目前需要对源码进行打包&#xff0c;一个简单的SpringBoot项目默认是打包为jar包&#xff0c;也就是在pom.xml中的<packaging>jar</packaging>方式&#xff0c;当然也会有一些打包成war包方式&#xff0c;使用外置的Tomcat应用服务器部署war包…

【Redis】基础数据结构-quicklist

Redis List 在Redis3.2版之前&#xff0c;Redis使用压缩列表和双向链表作为List的底层实现。当元素个数比较少并且元素长度比较小时&#xff0c;Redis使用压缩列表实现&#xff0c;否则Redis使用双向链表实现。 ziplist存在问题 不能保存过多的元素&#xff0c;否则查找复杂度…

ArcGIS Engine:报错无法嵌入互操作类型“ESRI.ArcGIS.Geometry.EnvelopeClass”。请改用适用的接口。

此错误是由于尝试直接实例化ArcGIS COM组件的某些互操作类引起的。这在.NET Framework 4及更高版本中是不被推荐的。 为了解决此问题&#xff0c;你需要确保在工程的引用中将ArcGIS的互操作类型设置为“不嵌入”。 按照以下步骤操作&#xff1a; 在解决方案资源管理器中找到…

Python实现JavaScript中AES加密有关填充问题

1. 先展示一下JS端的格式&#xff08;没找到没混淆的。。。&#xff0c;将就看吧&#xff09; 2. 在python加密中是没有选择填充模式的&#xff0c;需要自己来填充 3. 对加密不懂的朋友可能跟我一样刚开始很懵逼&#xff0c;因为遇到的基本都是pksc7填充模式&#xff0c;但是网…

独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”

各位CSDN的uu们你们好呀&#xff0c;今天依旧是小雅兰的51单片机的内容&#xff0c;内容主要是&#xff1a;独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位&#xff0c;下面&#xff0c;让我们进入51单片机的世界吧&#xff01;&a…

大数据技术标准推进委员会发布《地球大数据白皮书(2023年)》

导读 地球大数据的应用领域范围广阔&#xff0c;包括生态保护、自然资源管理、气象服务、城市规划、应急容灾等方面&#xff0c;但目前仍处于发展初期&#xff0c;面临着数据来源、结构多样&#xff0c;数据管理门槛高&#xff0c;数据应用场景复杂、落地方法论较少等痛点。如…

使用postman 调用 Webservice 接口

1. 先在浏览器地址栏 访问你的webService地址 地址格式: http://127.0.0.1:8092/xxxx/ws(这个自己的决定)/xxxxXccv?wsdl 2. post man POST 访问wwebService接口 地址格式: http://127.0.0.1:8092/xxxx/ws(这个自己的决定)/xxxxXccv <soapenv:Envelope xmlns:soapenv…

PCB放置过孔技巧

合理的放置过孔能有效的节约面积。 我们根据嘉立创的pcb工艺能力中写出单双面板最小过孔为0.3mm(内径)/0.5mm(外径) 设置过孔尺寸外直径为24mil&#xff08;0.61mm&#xff09;&#xff09;内直径为12mil&#xff08;0.305mm&#xff09; 嘉立创PCB工艺加工能力范围说明-嘉立…

Java常见设计模式

单例模式&#xff1a;程序自始至终只创建一个对象。 应用场景&#xff1a;1.整个程序运行中只允许一个类的实例时 2.需要频繁实例化然后销毁的对象 3.创建对象时耗时过多但又经常用到的对象 4.方便资源相互通信的环境 懒汉式线程不安全问题解决方案&#xff1a; 双重检查加锁机…

Spring AOP 中被代理的对象一定是单例吗?

今天我们来思考这样一个问题&#xff1a;在 Spring AOP 中&#xff0c;被代理的对象是单例的吗&#xff1f;当我们每次获取到代理对象的时候&#xff0c;都会重新获取一个新的被代理对象吗&#xff1f;还是被代理的对象始终是同一个&#xff1f; 为什么要思考这个问题&#xf…

1200*C. Challenging Cliffs(模拟构造贪心)

Problem - 1537C - Codeforces Challenging Cliffs - 洛谷 解析&#xff1a; 排序数组&#xff0c;然后找出间隔最短的两个相邻的数 a&#xff0c;b&#xff0c;c&#xff0c;d&#xff0c;e&#xff0c;f &#xff08;假设b&#xff0c;c为差最小的两个数&#xff09;。 然后…

BUGKU-simple_SSTI_1漏洞注入

SSTI漏洞注入 SSTI全称Server side template injection.服务端模板注入这节课主要讲flask的模板注入.flask会把类似于 的变量当做参数来渲染并填充到web页面,如果该参数可控并被后台解析则有可能被注入恶意代码导致注入漏洞请注意 模板注入只会存在于二次渲染中,无二次渲染不会…

FPGA 芯片点亮标准?

芯片设计完成&#xff0c;给到工厂制造&#xff0c;封装后回来&#xff0c;要经过最重要的一个点亮的环节&#xff0c;你知道什么叫做点亮吗&#xff1f; 其实&#xff0c;什么样叫做点亮&#xff0c;每家公司有每家的标准&#xff0c;本着自已不为难自已的原则&#xff0c;一…

详解TCP三次握手(建立连接)和四次握手(释放连接)

TCP是是一个面向连接的协议&#xff0c;无论哪一方发送数据之前&#xff0c;都必须在双方之间建立一条连接。 一、建立连接 建立TCP连接时&#xff0c;要经历这样的流程&#xff1a; ① 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口&#xff0c;以及初始…

《软件方法(下)》第8章2023版连载(05)关于实体类

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.2 建模步骤C-1 识别类和属性 8.2.2 三种分析类 8.2.2.2 关于边界类 边界类的责任是接受输入、提供输出以及做简单的过滤。 图8-20中提到边界类的映射方法——每个有接口的外系统…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验

课程1_第1周_测验题 目录&#xff1a;目录 第一题 1.“人工智能是新电力” 这个比喻指的是什么&#xff1f; A. 【  】人工智能为我们的家庭和办公室的个人设备供电&#xff0c;类似于电力。 B. 【  】通过“智能电网”&#xff0c;人工智能正在传递新一波的电力。 C. …

报考浙江工商大学2024年工商管理硕士(MBA)联考指南

1. 预报名时间&#xff1a;2023年9月24日-27日每天09&#xff1a;00-22&#xff1a;00 2. 正式报名时间&#xff1a;2023年10月8日-25日每天09&#xff1a;00-22&#xff1a;00 3. 浙江省网上确认&#xff08;现场确认&#xff09;时间&#xff1a;2023年10月31日-11月4日17&…

cvpr24写作模板pdfLaTex编译器注意点小结

文章目录 1 更改作者显示 Anonymous CVPR submission2 \label标签3 换行符// 与换列符&4 \medskip5 首行缩进6 插入图片6.1 单幅图片6.2 并排显示\hfill Reference https://cvpr.thecvf.com/Conferences/2024 1 更改作者显示 Anonymous CVPR submission 这一行开头加上% …

超全整理,Jmeter接口性能测试-Beanshell调用jar包加密(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、添加beanshell…