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

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

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

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

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

from time import sleep
 
 
class WebKeys:
    def __init__(self):
        self.driver = webdriver.Chrome()
 
    # 访问url
    def 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)`

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.com
  name: xpath
  value: //*[@id="kw"]
  txt: 狗
-
  url: http://www.baidu.com
  name: xpath
  value: //*[@id="kw"]
  txt: 鸡
-
  url: http://www.baidu.com
  name: xpath
  value: //*[@id="kw"]
  txt: 牛
-
  url: http://www.baidu.com
  name: xpath
  value: //*[@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函数里面有很多参数,方便我们根据自己的需要去调用!

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

文档获取方式: 

加入我的软件测试交流群:822269834免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

世微 多功能 LED降压型恒流芯片内置2.2A LED摩托车灯 全亮 半亮 爆闪 AP2403

产品描述 AP2403 是一款 PWM 工作模式,内置功率管,适用于 5-100V 输入的高精度降压 LED 恒流驱动芯片。输出功率可达 22W,电流 2.2A。AP2403 可实现三段功能切换,通过 MODE1/2/3 切换三种功能模式:全亮,半亮&#xff0…

ElementPlusError: [ElOnlyChild] no valid child node found

突然发现页面报了一堆黄色的错误提示 查了下原来是这里导致的,只需要把v-if 挪到popover那层即可 解决

sql调优

慢查询 SQL 治理方案 一、SQL 性能下降的原因 在对 SQL 进行分析之前,需要明确可能导致 SQL 执行性能下降的原因进行分析,执行性能下降可以体现在很多方面: 查询语句写的烂索引没加好表数据过大数据库连接数不够查询的数据量过大被其他慢s…

TikTok美区本土店铺如何做好IP隔离?

为什么要进行IP隔离呢?因为我们无法在国内直接运营Shopee、TikTok、Lazada等平台的本土店,平台识别出店铺登录IP非本土IP,则容易导致店铺风控、被标记为伪本土店,影响店铺经营。 TikTok美区店铺的IP隔离方法和Shopee本土店一致&a…

羊大师详解羊奶如何帮助控制血压

羊大师详解羊奶如何帮助控制血压 羊奶是一种珍贵的天然饮品,不仅具有丰富的营养成分,还被证实对血压具有调控作用。很多人在了解到羊奶的功效后,都对其与血压之间的关系产生了浓厚的兴趣。接下来,小编羊大师将为大家详细介绍羊奶…

UEC++ day8

伤害系统 给敌人创建血条 首先添加一个UI界面用来显示敌人血条设置背景图像为黑色半透明 填充颜色 给敌人类添加两种状态表示血量与最大血量,添加一个UWidegtComponet组件与UProgressBar组件 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "Enemy …

短视频变表情包gif怎么做?这一招最好用

Gif动态表情包是一种有效的表达感情的方式。可以通过添加图像、文字等更加直观的传递情感和信息。在各种聊天软件中gif动态表情包也是非常收欢迎的。当我们看到一段视频想要将其制作成gif动态表情包的时候要怎么操作呢?教大家使用在线制作gif(https://ww…

低代码开发:云表颠覆传统,轻松破解应用开发周期长之困局

在传统的应用开发模式下,应用开发周期长一直是IT部门和业务部门头疼的问题。面对业务部门提出的一个又一个新的应用需求,IT部门往往应接不暇,难以一一满足。这种困境不仅使IT部门负担沉重,更导致业务部门因长时间的等待而心生不满…

SVD 最小二乘法解 亲测ok!

线性最小二乘问题 m个方程求解n个未知数&#xff0c;有三种情况&#xff1a; mn且A为非奇异&#xff0c;则有唯一解&#xff0c;xA.inverse()*bm>n&#xff0c;约束的个数大于未知数的个数&#xff0c;称为超定问题&#xff08;overdetermined&#xff09;m<n&#xff0…

多个视频怎么生成一个二维码?二维码看视频的制作方法

二维码能放入多个视频吗&#xff1f;现在用二维码看视频是很流行的一种方式&#xff0c;不仅符合现在人的行为习惯&#xff0c;而且还不需要占用自身的容量空间&#xff0c;能够即时的获取视频内容。那么当有多个视频需要展示&#xff0c;但是想要放到一个二维码中&#xff0c;…

推荐一款png图片打包plist工具pngPackerGUI_V2.0

png图片打包plist工具&#xff0c;手把手教你使用pngPackerGUI_V2.0 此软件是在pngpacker_V1.1软件基础之后&#xff0c;开发的界面化操作软件&#xff0c;方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件&#xff0c;得到如下目录&#xff0c;双击打开 pngPackerGUI.…

Claude 发布2.1 版本,重大升级更新来看看有什么新功能?

11 月 23 日消息&#xff0c;OpenAI 竞争对手 Anthropic 日前推出了 Claude 2.1 聊天机器人及对应同名 AI 模型Claude 2.1&#xff0c;本文将总结Claude 2.1的主要功能。 增强的处理能力 上下文处理量大幅提升&#xff1a;Claude 2.1 现在能处理高达 200K上下文标记&#xff…

完美解决AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘

文章目录 前言一、完美解决办法安装低版本1.21或者1.19.3都可以总结 前言 这个问题从表面看就是和numpy库相关&#xff0c;所以是小问题&#xff0c;经过来回调试安装numpy&#xff0c;发现是因为目前的版本太高&#xff0c;因此我们直接安装低版本numpy。也不用专门卸载目前的…

【Java从入门到大牛】网络编程

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年11月23日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f4…

Mybatis plus 简介

简介 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网:https://baomidou.com/pages/24112f/ 特性 无侵入&…

Mybatis一级缓存和二级缓存原理剖析与源码详解

Mybatis一级缓存和二级缓存原理剖析与源码详解 在本篇文章中&#xff0c;将结合示例与源码&#xff0c;对MyBatis中的一级缓存和二级缓存进行说明。 MyBatis版本&#xff1a;3.5.2 文章目录 Mybatis一级缓存和二级缓存原理剖析与源码详解⼀级缓存场景一场景二⼀级缓存原理探究…

安卓手机好用的清单软件有哪些?

生活中每个人都有丢三落四的习惯&#xff0c;伴随着生活节奏的加快&#xff0c;人们常忘事的情况会更加频繁的出现&#xff0c;这时候很多人就开始选择手机上记录清单类的软件&#xff0c;安卓手机在手机市场中占有很大的分量&#xff0c;在安卓手机上好用的记录清单的软件有哪…

别熬夜了!人真的会变臭

身为当代社畜&#xff0c;你一定经历过如下瞬间——— 周一早高峰的地铁车厢&#xff0c;拥挤的人群里若有若无地飘荡出一股刺鼻臭味&#xff0c;即使戴着口罩也难以抵挡其穿透性&#xff1b; 深夜还灯火通明的办公室工位上&#xff0c;浑浊的空气裹挟着疲惫的身体&#xff0…

Shell 通配符与正则表达元字符

Author&#xff1a;rab 目录 前言一、通配符1.1 *1.2 ?1.3 []1.4 {} 二、正则表达元字符2.1 *2.2 .2.3 ^2.4 $2.5 []2.6 \2.7 \<\>2.8 \{\} 总结 前言 不管是学任何语言&#xff0c;几乎都会涉及到通配符与正则的使用。有时候对于 Linux 初学者来说&#xff0c;往往会将…