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

news2024/11/23 9:12:22
一、环境配置
1.安装python3

brew update

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
  1. # coding: utf-8

  2. import pytest

  3. import public

  4. import read_testcase

  5. import record

  6. #获取一个账号token,全局变量

  7. public.getalltoken()

  8. #测试用例实例化

  9. testcase=read_testcase.case()

  10. #所有测试用例开始前执行的文件,只执行一次

  11. def setup_module(module):#每次开始测试执行一次

  12. print ("setup_module")

  13. #所有测试用例结束后执行的文件,只执行一次

  14. def teardown_module(module):#每次测试完成执行一次

  15. print ("teardown_module")

  16. #每个测试用开始执行一次

  17. def setup_function(function):

  18. print ("setup_function")

  19. #每个测试用例执行完执行一次

  20. def teardown_function(function):

  21. print ("teardown_function")

  22. #装饰器 pytest 整合的测试用例生成多个结果

  23. @pytest.mark.parametrize('mycase', testcase.testcase_list,ids=testcase.testcasename)

  24. def test_all(mycase):

  25. testcase=mycase['Testcase_name']+str(mycase['Testcase_ID'])+'.'+str(mycase['ID'])+":"+mycase['Name']

  26. #print(mycase['Name'])

  27. #pytest.skip("skip testcase: (%s)" % mycase['Name'])

  28. #pytest.xfail("previous test skip (%s)" % mycase['Name'])

  29. mycase = public.get_Precondition(mycase)

  30. #执行接口的测试

  31. r=public.request_method(mycase)

  32. try:

  33. print(r.status_code)

  34. print(r.json())

  35. except Exception as e:

  36. print(r.content)

  37. print(e)

  38. #对返回数据进行断言

  39. public.assert_method(r, mycase)

  40. #记录测试用例名称存储log

  41. record.record_testcase_name(testcase)

  42. #记录测试时使用的数据

  43. record.record_testcase_msg(mycase)

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

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

软件测试面试文档

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

 

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

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

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

相关文章

[实用工具]Docker安装nextcloud实现私有云服务和onlyoffice

Nextcloud是一款开源的云存储和协作平台,允许用户在自己的服务器上存储和访问文件,同时提供强大的协作工具。它可以替代商业云存储服务,让用户拥有完全控制和自主管理自己的数据。 Nextcloud支持文件上传和下载,可以通过Web界面、…

Android实现RecyclerView宽度变化动画

效果图 实现思路就是定义一个属性动画,在动画监听器中不断修改RecyclerView的宽度 valueAnimator ValueAnimator.ofInt(begin, recyclerView.getWidth() * 2);valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {Overridepublic void …

EasyAnimate

https://github.com/aigc-apps/EasyAnimate/blob/main/README_zh-CN.mdhttps://github.com/aigc-apps/EasyAnimate/blob/main/README_zh-CN.md EasyAnimate v4是一个用于生成高分辨率和长视频的端到端解决方案。我们可以训练基于转换器的扩散生成器,训练用于处理长视频的VAE,…

python35_控制台简单计算年薪

控制台简单计算年薪 def calculate_annual_salary(monthly_salaries):"""计算年薪。参数:monthly_salaries: list of float,每个月的工资列表。返回值:float,用户的年薪。"""annual_salary sum(monthly_salaries)return…

论文作者署名排序是怎么界定的?

人人都想在论文的作者名单中占个位子,特别是一作和通讯作者,我也经常会收到一些人的哭诉,说自己明明做了大部分的工作,但却让别人的名字挂在第一作者。 在厘清一作与通讯作者的意义之前,我们先来看看谁可以署名。目前国…

经典蓝牙BLE版本区别:【图文讲解】

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙(BLE)。 1:蓝牙4.0 BLE 4.0版本是3.0版本的升级版本&a…

MySQL 初探:从基础到优化

什么是 MySQL? MySQL 是一个开源的关系型数据库管理系统 (RDBMS),使用结构化查询语言 (SQL) 进行数据管理。作为最流行的数据库之一,MySQL 被广泛应用于各类网站和应用中,从小型应用到大型复杂系统。 MySQL 的特点 开源免费&am…

antdv树形表格 大量tooltip等组件导致页面卡顿问题优化

vue3、ant-design-vue 4.2.3 遇到的问题:页面中有个展示树形数据的表格,默认需要全部展开,有一组数据量较大时页面首次渲染时非常卡顿,发现每次都大概用了7、8秒才完成渲染。表格展开的数据大概300条数据,操作列中有5…

SpringBoot框架下的服装生产管理系统

1 绪论 1.1 研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高…

leetcode:反转字符串中的单词III

题目链接 string reverse(string s1) {string s2;string::reverse_iterator rit s1.rbegin();while (rit ! s1.rend()){s2 *rit;rit;}return s2; } class Solution { public:string reverseWords(string s) {string s1; int i 0; int j 0; int length s.length(); for (i …

2024年【金属非金属矿山(地下矿山)安全管理人员】复审考试及金属非金属矿山(地下矿山)安全管理人员在线考试

题库来源:安全生产模拟考试一点通公众号小程序 金属非金属矿山(地下矿山)安全管理人员复审考试考前必练!安全生产模拟考试一点通每个月更新金属非金属矿山(地下矿山)安全管理人员在线考试题目及答案&#…

防汛可视化系统:提升应急响应能力

通过图扑可视化系统实时监测水情、雨情和地理数据,辅助防汛决策与调度,提供直观的风险预警信息,从而优化资源分配,提高防汛应急响应效率。

进程通讯方式区别(从不同角度看)

*常用到的不同主机间进程通讯:Socket。比如:host和引擎间socket指令通讯、分派和复判之间指令通讯; *共享内存:在Windows系统中,共享内存的实现通常有以下几种方式: 1.内存映射文件(最常用):(…

linux上的smb共享文件夹

需求描述 公司的打印机使用扫描功能的时候,需要发送大量文件。然鹅公司的电脑都是加入了AzureAD的,不能在公司电脑上简单设置共享。好在公司有很多阿里云上的服务器,Linux和Windows的都有,所以就来尝试用阿里云的服务器来进行smb…

正点原子学习笔记之汇编LED驱动实验

1 汇编LED原理分析 为什么要写汇编     需要用汇编初始化一些SOC外设     使用汇编初始化DDR、I.MX6U不需要     设置sp指针,一般指向DDR,设置好C语言运行环境 1.1 LED硬件分析 可以看到LED灯一端接高电平,一端连接了GPIO_3上面…

华捷艾米3D结构光模组测试

1.测试项目总览 本次测试主要测试以下几个方面: 模组的基本属性和SDK基本功能;华捷艾米提供的人脸防伪算法性能;模组的逆光性能。 2.基本属性和SDK基本功能 图像属性: 模组提供的3d深度数据标称分辨率最大为640x480&#xff0…

软件测试学习笔记丨MongoDB

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32359 一、MangoDB数据库 1.1 关系与非关系 1.1.1 关系型数据库 关系型数据库 MySQL,Oracle, SQLServer, Access…SQL(结构化查询语句&#x…

[图形学]smallpt代码详解(上)

一、简介 本文介绍了著名的99行代码实现全局光照的光线跟踪代码smallpt。 包括对smallpt的功能介绍、编译运行介绍,和对代码的详细解释。希望能够帮助读者更进一步的理解光线跟踪。 二、smallpt介绍 1.smallpt是什么 smallpt(small Path Tracing) 是一个全局光照…

微信服务号灰度测试折叠,看谁该慌了?

2024年国庆节前夕,突然发现我的微信的会话列表清静了不少。 紧接着,我马上就慌了... 🤔怎么“丰巢快递”不见了,我要找取件码 🤔我的flomo浮墨笔记公众号呢?我要记笔记啊 🤔这个月怎么没有…

3个步骤轻松集成Push Kit,实现App消息推送

推送通知作为App重要的消息传递工具,广泛应用于电子商务、社交媒体、旅游交通等领域的通知场景。比如当应用有新功能或安全补丁时,系统将推送消息提醒用户及时更新;如果是航班出行类的应用,会发送最新的班次时间表给用户&#xff…