web自动化测试 —— pytest快速上手_python网页自动化测试工具

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

1.3 pytest文档

官方文档:https://docs.pytest.org/en/latest/contents.html****

在pytest框架中,有如下约束:

  • 所有的单测文件名都需要满足test_*.py格式或*_test.py格式。
  • 在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
  • 在单测类中,可以包含一个或多个test_开头的函数。
  • 此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

1.4 创建测试用例

1.创建test_开头的文件,测试文件以 test_xx.py 命名需要以 test_开头(或_test 结尾)

2.若是新建类,测试类需要以 Test_开头,并且不能带有 init 方法(Test开头的类,这个类也叫做测试套件,类下面的是函数才是测试用例)

3.测试用例(方法)需要以 test_开头

import pytest #导入pytest模块
def test_beifan(): #测试用例
pass
class TestBaili: #测试套件
def test_a(self): #测试用例,第一个测试方法
pass
def test_b(self): #测试用例,第二个测试方法
pass

4.在用例中使用断言

Pytest 最常用的断言一般有以下五种:

assert xx:判断 xx 为真

assert not xx:判断 xx 不为真

assert a in b:判断 b 包含 a

assert a == b:判断 a 等于 b

assert a !=b:判断 a 不等于 b

添加断言在对应的方法里面,做判断测试用例结果是否满足预期,示例如下:

5.优化断言

如果想要在失败的时候看到更详细的信息,可以在断言上添加说明,示例如下:

执行结果如下图,可以看到失败时断言的说明信息:

1.5 执行测试用例

1.5.1 使用命令行执行

cmd 窗口,然后执行 pytest 文件路径/测试文件名例如 pytest ./test_tt.py

如果当前路径已经是放测试用例文件的文件夹下,想要测试文件,则直接可以输入pytest 测试文件名 即可:

如果只输入 pytest,则会默认执行当前文件夹下所有以 test_开头(或_test 结尾)的文件。

1.5.2 IDE(PyChram)执行

写法如截图所示,pytest.main()(参数以列表的形式给出,如截图)

执行当前文件所在路径下的文件,指定文件名则执行指定的文件,若没指定,执行所有 test_开头或者_test 结尾的文件。

也可以新建一个main.py文件

import pytest

if name == ‘main’:
pytest.main() #程序入口

1.5.3 执行指定文件指定方法

1.5.3.1 命令行编写方式

pytest路径/文件名::类名::方法名例如

1.5.3.2****pycharm 编写方式

如果是用 pycharm 写法如图,与上面的命令行等价:

1.5.4 带参数执行

常用的 pytest 带参数执行:列举几种,其余扩展可以自行百度

1.5.4.1 pytest -q简化控制台的输出

不带参数执行结果:

带参数执行结果:

1.5.4.2 Pytest -v 输出用例更加详细的执行信息,比如用例所在文件和用例名称
1.5.4.3 pytest -k 执行用例中包含‘关键字’的用例
1.5.4.4 pytest -s 输出用例中的调试信息,比如 print 打印信息,如果不加参数则不输出****待执行的用例
1.5.4.5 pytest -m执行‘标记’的内容,执行特定的测试用例,执行有相同标记的测试用例,添加标记的方法如下
1.5.4.6 pytest -x执行失败则停止执行,后面的用例不会被执行
1.5.4.7 pytest --maxfail=n执行失败 n 次之后停止执行,n 是执行失败的次数
1.5.4.8 pytest --count=n 执行用例 n 次,n=2 就是执行两次
1.5.4.9 pytest --lf (last failed)重新运行上次失败的用例,若没有失败的会全部跑
1.5.4.10 pytest --ff (failed first)重新运行所有用例,但首先运行上次失败的用例

1.6 读懂测试结果

.代表一个测试用例通过,…代表两个测试用例通过,以此类推;
s,即Skip,代表用例跳过执行;
F,即Failure,一般是断言发生错误;
E,即Error,一般是用例执行过程中报错。

1.7 pytest的fixures

fixtures(夹具)可以在测试用例执行之前,执行之后,自动执行一些代码

在不同用例中,相同的代码进行复用

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-1U37btXO-1713424791438)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

### 如何使用Python进行API接口自动化测试 #### 方法概述 使用Python进行API接口自动化测试可以通过多种方法和工具实现。这些方法通常涉及选择合适的框架、设计测试用例以及生成测试报告。以下是几种常见的方法: 1. **Pytest框架** Pytest是一个功能强大的测试框架,适用于各种规模的项目。它可以用于编写简洁而灵活的API测试脚本[^1]。通过结合requests库发送HTTP请求并验证响应数据,可以轻松完成API的功能性和性能测试。 2. **自定义工具开发** 如果需要更复杂的定制化需求,可以选择基于Flask或其他Web框架创建自己的API测试工具。例如,Flask-RESTful扩展提供了一种简便的方式来构建RESTful服务及其对应的自动化测试环境[^3]。 3. **关键字驱动框架——Robot Framework** Robot Framework是一种通用的开源自动化测试框架,特别适合于接受测试人员输入的关键字形式指令来进行操作控制[^4]。对于初学者来说,这是一个很好的起点,因为它不需要太多的编程背景知识就可以快速上手。 4. **集成IDE插件与第三方库** 利用像PyCharm这样的集成开发环境中内置的支持或者额外安装的相关插件也能极大地方便我们开展工作流程管理活动比如调试跟踪错误等等[^2]。此外还可以考虑引入其他专门针对网络通信优化过的外部模块如`aiohttp`, `httpx`等进一步增强异步处理能力从而提升整体效率表现. #### 示例代码展示 下面给出一段简单的示例程序演示如何利用pytest配合request执行基本GET请求并将结果断言: ```python import pytest import requests def test_api_status(): url = "http://shop-xo.hctestedu.com" params = { 's': 'api/user/reg', 'application': 'app', 'application_client_type': 'weixin' } response = requests.get(url, params=params) assert response.status_code == 200 # 验证状态码是否正确 if __name__ == "__main__": pytest.main() ``` 此段代码片段展示了最基本的单元级别功能性检测逻辑结构模式之一即确认目标网址返回预期中的成功响应消息体内容长度大于零并且其头部包含特定字段属性值等于预设标准数值的情况下的行为特征描述说明文档字符串部分则提供了关于函数目的作用范围等方面的补充解释信息以便后续维护者更容易理解当前这段源码的实际用途所在之处[^5]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值