pytest测试框架入门1
创始人
2024-02-29 19:20:04
0

pytest单元测试框架

单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试
单元测试框架主要做什么

  1. 测试发现:从多个文件里面找到我们的测试用例
  2. 测试执行:按照一定的顺序和规则去执行,并生成结果
  3. 测试判断:通过断言判断预期结果和实际结果的差异
  4. 测试报告:统计测试进度,耗时,通过率,生成测试报告
    单元测试框架和自动化测试框架的关系

自动化测试框架

为了完成指定的系统的自动化测试,来封装的一整套完善的代码的框架,主要封装一些自动化的基础模块,自动化的管理模块,包括自动化测试的统计模块
作用

  1. 提高测试效率,降低维护成本
  2. 减少人工的干预,提高测试的准确性,增加代码的重用性
  3. 核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试

pytest单元测试框架和自动化测试框架中的关系

  1. 单元测试框架:只是自动化测试框架中的组成部分之一
  2. pom设计模式:只是自动化测试框架中的组成部分之一
  3. 数据驱动
  4. 关键字驱动
  5. 全局配置文件的封装
  6. 日志监控
  7. 断言
  8. 报告邮件等

pytest简介

  1. pytest是一个非常成熟的python的单元框架
  2. pytest可以和selenium,request,appinum结合实现web自动化,接口自动化,app自动化
  3. pytest可以实现测试用例的跳过以及returns失败用例的重试
  4. pytest可以和allure生成非常美观的测试报告
  5. pytest可以和jenkins持续集成
  6. pytest有很多非常强大的插件,并且这些插件能够实现很多的实用操作
    安装:
pip install pytest

验证是否安装成功:pytest --version

使用pytest,默认的测试用例的规则以及基础应用

  1. 模块名必须以test_开头或者_test结尾
  2. 测试类必须以Test开头,并且不能有init方法
  3. 测试方法必须以test开头

pytest测试用例的运行方式

1. 主函数模式
在这里插入图片描述
2. 命令行模式
在这里插入图片描述

以上两种方法可以运行所有用例,也可以运行部分用例
同样的,可以使用一个主文件来执行所有的测试用例
在这里插入图片描述

运行指定模块的运行:参数后面加入要指定运行模块的文件名
在这里插入图片描述

如果有多个测试文件夹,想要执行指定的文件夹:
在这里插入图片描述
通过nodeid制定用例执行:nodeid由模块名,分隔符,类名,方法名,函数组成。
比如执行某一个文件下的某一个方法或者某一个函数
方法要加类名用::隔开
在这里插入图片描述
在这里插入图片描述

参数详解:
-s :表示输出调试的信息,包括print打印的信息
在这里插入图片描述
-v:表示详情显示,测试的模块,类等
在这里插入图片描述

-n:支持多线程或者分布式运行测试用例,如下图,两个线程执行
在这里插入图片描述

–reruns=n:表示失败的重新跑n次
在这里插入图片描述

-x:表示只要有一个用例报错,测试停止
在这里插入图片描述

–maxfail=n:表示出现n个用例失败就停止
在这里插入图片描述

-k:表示执行含有指定字符串的用例
例如执行含有 “li” 的用例
在这里插入图片描述
在这里插入图片描述

pytest执行测试用例的顺序

pytest默认从上到下顺序执行
改变执行顺序:

@pytest.mark.run(order=n)

上面代码表示我想让某个用例排在第n个执行
在这里插入图片描述

3. 通过读取pytest.ini配置文件运行
pytest.ini这个文件它是pytest单元测试框架的核心配置文件
位置:一般放在项目的根目录
编码:必须为ANSI,可以使用notpad++修改编码格式
作用:可以改变pytest默认的行为
运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件
pytest.ini文件:
在这里插入图片描述

例如:testcase下有两个文件test_login和test_produce,那么我可以配置如下,只执行test_login文件
在这里插入图片描述

分组执行(冒烟,分模块执行,分接口和web执行)
smoke:冒烟用例,分布在各个模块里面
首先配置文件中:
在这里插入图片描述
在想要执行的用例前面加:@pytest.mark.smoke
在这里插入图片描述
在这里插入图片描述

再去执行,就会发现只执行了带有smoke标记的用例:
pytest -m “target1 or target2 or…”
执行有target1,target2…标记的用例
在这里插入图片描述

pytest跳过测试用例

1. 无条件跳过
在想要跳过的用例前面加上@pytest.mark.skip(reason=“这里写上跳过的原因”)
在这里插入图片描述
在这里插入图片描述

2. 有条件跳过
pytest.mark.skip(skipreason,reason=“这里写上跳过的原因”)。命令中存在跳过的原因
在这里插入图片描述
在这里插入图片描述

生成报告

1. html报告
一般会在项目工程中添加一个报告文件件,本例中加入report文件夹,生成的测试报告的文件名为report.html
在这里插入图片描述
在这里插入图片描述

就会在report文件下看到report.htm文件
在这里插入图片描述

浏览器打开后就是报告文件
在这里插入图片描述

2. pytest结合allure-pytest插件生成allure测试报告

  1. 下载,解压,配置path路径
    安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

下载allure

brew install allure
  1. 生成json格式的临时报告
--alluredir ./file

在这里插入图片描述

  1. 生成allure报告
allure generate

在这里插入图片描述

在这里插入图片描述
报告结果
在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...