news 2026/4/24 12:58:24

python+pytest+request 接口自动化测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python+pytest+request 接口自动化测试

一、环境配置

1.安装python3

brewupdate

brew install pyenv

然后在 .bash_profile 文件中添加 eval “$(pyenv init -)”

pyenv install 3.5.3 -v

pyenv rehash 安装完成后,更新数据库

pyenv versions 查看目前系统已安装的 Python 版本

pyenv global 3.5.3 切换 Python 版本

python -V,查看 Python 版本

2.安装pytest及其他所需安装包:

pip install -U pytest
pip install -U requests
pip install -U pytest-pythonpath
pip install -U pytest-capturelog
pip install PyYAML
pip install configparser
pip install pyopenssl

二、pytest框架

setup_module(module): #开始测试前执行一次,目前无实际使用

setup_function(function): #每个测试用开始前执行一次,用于检查、准备测试环境

teardown_function(function): #每个测试用例执行完执行一次,用于清除生成的测试数据

teardown_module(module): #每次测试完成执行一次,用于还原测试环境

@pytest.mark.parametrize(‘mycase’, case.list,ids=case.name) #装饰器,用来将list格式的测试用例分开执行

pytest.skip("skip testcase: (%s)" % mycase['Name']) #跳过测试用例
pytest.xfail("previous test failed (%s)" % mycase['Name']) #跳过会失败的测试用例

三、测试报告

python -m pytest -s -q 控制台输出每一步结果

1.allure

安装:

sudo pip install pytest-allure-adaptor
brew tap qatools/formulas
brew install allure-commandline

执行:

python -m pytest -s -q --alluredir ./report #控制台也输出每一步结果
python -m pytest --alluredir ./report #控制台只输出成功/失败和失败报的错误
allure generate report/ -o report/html #生成报告,可直接打卡看

2.pytest-html

安装:

sudo pip install pytest-html

执行:

python -m pytest -s -q --html=./report.html #控制台也输出每一步结果

python -m pytest --html=./report.html #控制台只输出成功/失败和失败报的错误

四、Demo

# coding: utf-8 import pytest import public import read_testcase import record #获取一个账号token,全局变量 public.getalltoken() #测试用例实例化 testcase=read_testcase.case() #所有测试用例开始前执行的文件,只执行一次 def setup_module(module):#每次开始测试执行一次 print ("setup_module") #所有测试用例结束后执行的文件,只执行一次 def teardown_module(module):#每次测试完成执行一次 print ("teardown_module") #每个测试用开始执行一次 def setup_function(function): print ("setup_function") #每个测试用例执行完执行一次 def teardown_function(function): print ("teardown_function") #装饰器 pytest 整合的测试用例生成多个结果 @pytest.mark.parametrize('mycase', testcase.testcase_list,ids=testcase.testcasename) def test_all(mycase): testcase=mycase['Testcase_name']+str(mycase['Testcase_ID'])+'.'+str(mycase['ID'])+":"+mycase['Name'] #print(mycase['Name']) #pytest.skip("skip testcase: (%s)" % mycase['Name']) #pytest.xfail("previous test skip (%s)" % mycase['Name']) mycase = public.get_Precondition(mycase) #执行接口的测试 r=public.request_method(mycase) try: print(r.status_code) print(r.json()) except Exception as e: print(r.content) print(e) #对返回数据进行断言 public.assert_method(r, mycase) #记录测试用例名称存储log record.record_testcase_name(testcase) #记录测试时使用的数据 record.record_testcase_msg(mycase)

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:30:52

如何配置ALLEN BRADLEY MVI69E-MBS 模块

这是一款专为 CompactLogix™ 设计的 ‌Modbus 串行增强型通信模块‌,主要用于需要 Modbus 串行连接的工业场景。它有两个串行端口,支持主站和/或从站连接,能兼容多种 Modbus 设备,还附带了配置文件和指令,能帮你节省调…

作者头像 李华
网站建设 2026/4/20 1:40:17

Jmeter 性能-需求分析业务/场景设计

1、性能测试需求分析与业务调研 性能测试的需求不能直接从产品经理那里获得,因为产品经理定义的性能需求比较抽象。 要落实到可执行的性能测试需求往往需要进一步分析和细化。这也是为什么获取具体的性能需求比较难的一个原因。 一般情况下,要知道性能…

作者头像 李华
网站建设 2026/4/18 5:42:46

相似度匹配在AI原生应用中的核心作用解析

相似度匹配在AI原生应用中的核心作用解析 关键词:相似度匹配、AI原生应用、嵌入向量、距离度量、对比学习、推荐系统、多模态生成 摘要:在AI原生应用(如推荐系统、AIGC、智能搜索)中,“找相似"是最基础却最关键的能力——就像人类通过"找同类"理解世界,AI…

作者头像 李华
网站建设 2026/4/24 8:49:35

服装销售新模式:从卖产品到卖形象

引言:市场变了,你的销售模式也该变了有没有发现,现在的顾客越来越难“把握”了?价格战没效果,流量成本越来越高,顾客买完就走……传统服装生意正面临实实在在的挑战。但在一些领域里,一种新做法…

作者头像 李华
网站建设 2026/4/18 8:00:39

基于单片机的商品RFID射频安全防盗报警系统设计

摘 要 随着现代化经济建设和管理的发展,人民的生活水平不断提高,商场能够为我们提供我们所需要的生活用品,使我们的生活十分便利。现如今,大部分商场都是可以自由购买的,但是由于人员流动比较频繁,工作人…

作者头像 李华
网站建设 2026/4/22 12:05:56

云计算:重新定义资源效率,解锁企业增长新引擎

在数字化竞争日益激烈的今天,企业资源管理正面临前所未有的挑战:如何用更少的成本支撑更复杂的业务?如何让IT资源像“活水”一样随需而动?云计算的崛起,为这一问题提供了颠覆性答案——通过弹性、智能、全局优化的资源…

作者头像 李华