当前位置: 首页 > java >正文

Pytest项目_day07(pytest)

Pytest

请添加图片描述

  • 文件名需要以 test_ 开头或以_test结尾,同时文件内部的方法名也需要以 test_ 开头,这样pytest才会把它当作测试用例文件和测试用例中的测试方法,当我们运行该测试用例文件时,会执行该文件内的所有测试方法
  • 如果在控制台直接输入pytest <文件名>,那么文件不以 test_ 开头或以_test结尾,也能成功执行
  • 但是如果pytest <文件夹名>,那么pytest只会运行该文件夹下以 test_ 开头或以_test结尾的文件
  • 一般使用 test_ 开头
  • 如果测试用例内部的方法没有用test_开头,那么pytest不会运行这个方法
  • 测试类必须以Test开头,且不能有init方法,当我们点击左侧的小三角时,会运行该类下的所有测试方法
    请添加图片描述- 在pytest中,判断期望值是否跟实际值相等,是使用 assert来实现的- 使用pytest来运行测试用例时,需要在控制台中,输入pytest <文件名>
  • 运行测试用例后,在控制台会显示运行结果
    • .F表示第一个通过,第二个没通过
    • E表示error的代码位置
    • 右侧的100%表示测试用例的所有方法均执行完成
      在这里插入图片描述

Pytest中的测试用例执行顺序

  • 默认执行顺序

    • 按照定义的先后,自上而下执行
    • 如果是在同一文件夹下的测试用例文件,那么会按照文件名的顺序,自上而下执行
  • 使用 pytest-ordering 自定义顺序(需要安装pytest-ordering包)
    在这里插入图片描述

  • 在方法前加上run注解,其中order=几,就是第几位执行

常见的断言类型

  • 等于:==
  • 不等于:!=
  • 大于:>
  • 小于:<
  • 属于:in
  • 不属于:not in
  • 大于等于:>=
  • 小于等于:<=
  • 是:is
  • 不是:is not
    在这里插入图片描述

使用pytest来做request测试

  • 这里的test_mobile()test_mobile_post()是两个近似的测试方法,区别在于一个是get,一个是post
  • 注意:
    • 在Json中,我们可以使用[key]来获取value,例如result['msg'] == "ok"
import requestsdef test_mobile():params = {"shouji": "13906191369","appkey": "123"}r = requests.get(url="http://sellshop.5istudy.online/sell/shouji/query", params=params)print(r.status_code)assert r.status_code == 200result = r.json()assert result['status'] == 0assert result['msg'] == "ok"assert result['result']["shouji"] == "13906191369"assert result['result']["province"] == "浙江"assert result['result']["city"] == "杭州"assert result['result']["company"] == "中国移动"assert result['result']["areacode"] == "0571"# print(r.json())def test_mobile_post():params = {"shouji": "13906191369","appkey": "123"}r = requests.post(url="http://sellshop.5istudy.online/sell/shouji/query", params=params)assert r.status_code == 200result = r.json()assert result['status'] == 0assert result['msg'] == "ok"assert result['result']["shouji"] == "13906191369"assert result['result']["province"] == "浙江"assert result['result']["city"] == "杭州"assert result['result']["company"] == "中国移动"assert result['result']["areacode"] == "0571"
  • 运行后的结果为:
    在这里插入图片描述

pytest指定目录/文件执行

  • pytest testcases 指定目录执行,则会依次执行该目录下所有符合条件的测试用例
  • pytest testcases/test_one.py 指定文件执行,则会依次执行该文件内的所有符合条件的测试方法
  • pytest什么都不加,那么就会从当前的工作环境下,依次执行所有符合条件的测试用例(包括文件夹内)

pytest.ini配置文件

  • 可以使用testpaths来指定默认执行的路径或文件
  • 这样就可以在控制台直接输入pytest,默认执行的就是testpaths的路径,等同于pytest testcases
  • ./表示和pytest.ini处在同一级目录下
    在这里插入图片描述

pytest常用运行参数

  • pytest -m:执行特定的测试用例
  • pytest -k:执行用例包含“关键字”的用例
  • pytest -q:简化控制台的输出
  • pytest -v:可以输出用例更加详细的执行信息
  • pytest -s:输出我们用例中的调试信息
http://www.xdnf.cn/news/17307.html

相关文章:

  • 《C语言》函数练习题--2
  • Android 之 Jetpack WorkManager
  • 突破距离桎梏:5G 高清视频终端如何延伸无人机图传边界
  • 无人机光伏巡检效率提升68%!陌讯动态融合算法实战解析
  • Shuffle SOAR使用学习经验
  • ElasticSearch相关术语介绍
  • 亚远景-ISO 42001:汽车AI安全的行业标准新趋势
  • 华为开源CANN,再次释放“昇腾转向”信号
  • vue3对比vue2的性能优化和提升 :Vue 3 vs Vue 2
  • Java的异常体系
  • hadoop HDFS 重置详细步骤
  • ReAct Agent 原生代码实现(纯Python实现)
  • 【指南版】网络与信息安全岗位系列(三):安全运维工程师
  • 前端技术架构设计文档(Vue2+Antd+Sass)
  • 关于AI应用案例计算机视觉、自然语言处理、推荐系统和生成式AI四大领域的详细技术分析。
  • Java垃圾回收(GC)探析
  • 护网行动之后:容器安全如何升级?微隔离打造内网“微堡垒”
  • 【智能协同云图库】第六期:基于 百度API 和 Jsoup 爬虫实现以图搜图
  • 时间复杂度和空间复杂度Java语言描述
  • 【渲染流水线】[应用阶段]-[渲染命令队列]以UnityURP为例
  • AutoMQ-Kafka的替代方案实战
  • 如何在 Ubuntu 24.04 中永久更改主机名
  • zookeeper因jute.maxbuffer启动异常问题排查处理
  • 【macOS操作系统部署开源DeepSeek大模型,搭建Agent平台,构建私有化RAG知识库完整流程】
  • 29-数据仓库与Apache Hive-创建库、创建表
  • MT信号四通道相关性预测的Informer模型优化研究
  • Linux中Docker Swarm实践
  • 手机控制断路器:智能家居安全用电的新篇章
  • SupChains技术团队:需求预测中减少使用分层次预测(五)
  • VSCode - 设置Python venv