参考:https://www.bilibili.com/video/BV14i4y1c7Jo?from=search&seid=5485646383256203318

1、单元测试框架

2、单元测试框架和自动化测试框架


全局配置文件:向后面讲到的pytest.ini就是全局配置文件,用于设置自动化全局默认参数的文件

3、pytest简介


补充:pytest既可以执行方法,也可以执行函数(即直接用函数定义测试用例)

3.1 测试插件安装方法(虚拟环境)

一次性安装多个插件
首先建立一个txt文件,在txt文件中编辑需要安装的插件(一个插件一行)
使用命令: pip install -r 建立的txt文件名称
此方式安装是局部的,不是全局的,响应插件仅应用于所属项目

4、pytest 默认的测试用例的规则及基础应用

5、pytest测试用例的运行方式

1、主函数模式:
(1)运行所有:pytest.main(), 参数是列表方式pytest.main([-s]),可建立一个all.py模块用来组织所有测试用例

 (2)指定模块:pytest.main(["-vs", "test_login.py"])(3)  指定目录:pytest.main(["-vs", "./interface_testcase"])

   (4) 通过nodeid指定用例运行: nodeid由模块名,分隔符(::双冒号为分割符),类名,方法名,函数名组成pytest.main(["-vs", "./interface_testcase/test_interface.py::test_04_func"])


pytest.main(["-vs", “./interface_testcase/test_interface.py::TestInterface::Test_03_zhiliao”])
2、命令行模式
(1)运行所有:pytest, 参数是-s形式,例如:pytest -s
(2)指定模块:pytest -vs test_loging.py
(3)指定目录:pytest -vs ./interface_testcase
(4) 通过nodeid指定用例运行: pytest -vs ./interface_testcase/test_interface.py::TestInterface::Test_03_zhiliao

3、通过读取pytest.ini配置文件运行
pytest.init这个文件他是pytest单元测试框架的核心配置文件
1)位置:一般放在项目的跟目录
2)编码格式必须是ANSI,可以使用otepad++修改格式,

 3)作用:改变pytest默认的行为4)运行规则:不管是主函数的模式运行,命令模式运行,都会读取这个配置文件。5)pytest.ini格式:


4、参数详解
-s:表示输出调试信息,包括print打印信息
-v:显示更详细信息,包括模块名,类名,方法名及结果等, 可以将两个参数合并使用,以-vs形式
-n 支持多线程或者分布式运行测试用例, 例如:pytest.main(["-vs", “./interface_testcase”,"-n=2"]), 数字是指定的线程数量 (pytest -vs ./interface_testcase -n 2 )所使用的插件是 pytest-xdist
–reruns 失败测试用例重跑:例如:pytest.main(["-vs", “./interface_testcase”,"–reruns=2"]), 数字是指定重跑次数,(pytest -vs ./interface_testcase --reruns 2),所使用的插件是pytest-rerunfailures

-x:标识只要一个测试用例失败,就停止
--maxfail=number  出现最大测试用例数就停止,如果设置为2,则出现两个失败测试用例后就会停止
-k: 根据测试用例的部分字符串指定测试用例 pytest -vs -k "ao"
--html  ./report/report.html  生成测试报告  ,路径+报告名称

6 pytest执行测试用例的执行顺序

unitest: 按照ASCII码的大小来绝对的执行顺序自行
pytest: 默认按照从上向下的执行顺序
改变默认的执行顺序:使用mark标记, 标记测试用例执行顺序,例如:@pytest.mark.run(order=1),1代表第一个执行,2代表第二个执行,所使用的插件为pytest-ordering

7、如何分组执行

分组执行:冒烟, 分模块执行,分接口和web执行
smoke:冒烟用例,分布在各个模块里面,怎么挑选出来

1)配置文件中声明标记符号

1)标记用例:

2)执行
pytest -vs -m “smok” (-m是参数, “smok”是标记的字符串)
pytest -vs -m “smok or usermange” 同时执行标记为smok或usermange的测试用例

8、跳过测试用例

无条件 跳过测试用例

有条件跳过测试用例

9、 生成报告

9.1 allure生成报告,

1、安装allure的运行环境
allure生成报告插件需要java的运行环境,即需要安装jdk。
jdk安装参考:Appium自动化测试(二)Android SDK 环境配置
仅参考第一项“一、 首先配置jdk环境”即可。
2、下载allure,解压并只是path路径
官网地址:https://github.com/allure-framework/allure2/releases
3、配置环境变量
下载完成后解压,路径随意但要记住解压的路径,便于环境变量配置。


4、验证是否安装成功




问题: 在dos可以验证成功, 但是pycharm验证失败,怎么办?重启pycharm
5、生成测试报告

  • 生成json格式的临时报告

pytest.main(["-vs", “–alluredir=./temp”])或在全局配置中配置(如下图)

  • 生成allure报告

    os.system(“allure generate ./temp -o ./report --clean”), #“allure generate” 固定写法,表示产生allure报告,./temp,找到临时json格式报告,-o 输出,./report,将报告输出到路径 --clean是首先清除原来目录./report下的报告

10 前后治的处理(前后置又称固件或夹具)

10.1 setup/teardown,setup_class/teardown_class

执行测试前的准备工作,初始化,例如打开浏览器,加载网页,和测试后的处理,例如关闭网页。
setup/teardown在每个测试用例都会执行
setup_class/teardown_class(创建数据库的链接,创建日志对象,创建接口的请求对象)在所有的测试用例之前执行一次(更确切的说是在所有测试类之前执行一次)

与unitest不一样,全是小写

10.2 使用@pytest.fixture()装饰器来实现部分测试用例的前后置

@pytest.fixture()既可以实现所有也可以实现部分用例的前后置
参数:
scope: 表示的是被@pytest.fixture()标记的方法的作用域,function(默认),class,modue, package/sessinon(例如:如果为Function,即标识在响应函数执行前后置,如果为calss则在响应的类执行前后置。等等)


后置

params: 参数化,支持列表[],元祖(),字典列表[{},{},{}],字典元祖[(),(),()]形式



注意:@pytest.fixture(scope=“funuction”, params=[“成龙”])其中params是带s的
而request.param, 是不带s的,固定写法

autouse=True:自动执行,默认是False。 当为True 测试用例的方法中不引用,也自动使用前后置


return和yield都标识返回,return后面不能有代码,但yield后面可以有代码

ids: 当使用params参数化时,给每一个值设置一个变量。意义不大(当参数化时,执行结果中函数名称后面会有一个附加unicode编码的值,就是参数值,为便于可读,可一个给每个值设置一个变量

name:给表示的是被@pytest.fixture()标记的方法取一个别名。当取了别名之后,原来的名称就无法使用了。

11 通过conftest.py和@pytest.fixture结合使用实现全局前置应用,(比如项目的全局登录,模块的全局处理)

规定

  • conftest.py文件是单独存放的一个夹具配置文件,名称是固定的不能更改的
  • 用处可以在不同的py文件中使用同一个fixture函数
  • 原则上conftest.py需要和运行的用例放到同一层级,并且不需要做任何的import导入的操作

总结:
setup/teardown, setup_class/teardown_class 它是作用域所有测试用例或者所有的类
@pytest.fixture() 它的作用是即可以部分也可以全部前后置
conftest.py和@pytest_fixtrue()结合使用,作用域全局的前后置

12 断言 assert

assert 1==2

13 @pytest.mark.parametrize()

作用:参数化
参数:@pytest.mark.parametrize(args_name, args_value)
args_name:参数名
args_value: 参数值(列表,元祖,字典列表,字典元祖)有多少个值用例就会执行多少次

第一种方式:

第二种方式:与unitest中ddt的@unppack解包是一样的

14 结合yaml文件详解,实现接口自动化

一般情况下用yaml写接口自动化测试用例,用excel写ui自动化测试用例
yaml文件在接口自动化测试用的作用。
1、用于全局的配置文件一般两种形式ini或yaml、conf
2、用于写测试用例(接口测试用例)

14.1 yaml简介

yaml是一种数据格式,支持注释(#),换行,多行字符串,裸字符串(最小的数据单元就叫裸字符串,例如:整形,字符串,)

14.2语法规则

  • 区分大小写
  • 使用缩进标识层级,不能使用tab键缩进,只能使用空格缩进
  • 缩进没有数量的规定,只要前面是对其的就行
  • 注释是#

14.3数据组成

  • 1、Map对象,键值对, 键(空格)值,
    补充map对象就是指的键值对对象, yaml格式是否正确可以在https://www.bejson.com/validators/yaml_editor/网站进行验证
# 第一种写法,多行写法
student:name: darlyage: 18
# 第二种写法 一行写法
student:{name:darly, age:18}
  • 2、数组(list)用一组横线开头:如:

多行写法

-student:-name: darly-age: 18
-teacher:-name: felx-age: 10

一行写法:

-student: [{name: darly}, {age: 18}]teacher: [{name: felx}, {age: 12}]

14.4 yaml文件操作

插件安装: pip install pyyaml

接口实例


编制yaml文件

这个数据驱动太粗糙,还不够
例如:
断言还没有封装
allure报告定制
关键字驱动和数据驱动相结合
python的反射:
正常写法:先初始化对象,再调用方法
反射:通过对象得到类对象,然后通过类对象调用方法
jenkins的持续集成和allure报告集成,并且根据自动化报告的错误率发送电子邮件

其他



pytest单元测试框架相关推荐

  1. python制作考试系统_Python系统学习 - Pytest单元测试框架

    哈咯,大家,我们今天来学习pytest单元测试框架,这个框架要比unittest更加易于使用,结构性也更加好,希望大家能够从中学习到有用的东西,然后在下一章,我们来使用pytest单元测试框架来搭建一 ...

  2. pytest单元测试框架基本操作

    pytest 什么是单元测试框架? 单元测试是指在软件开发当中,针对软件的最小单元(函数.方法)进行正确性的检查测试. 单元测试框架主要做什么? 测试发现:从多个文件里面去找到我们测试用例. 测试执行 ...

  3. pytest单元测试框架简介

    一.什么是单元测试框架 单元测试框架是指:在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试. 二.单元测试框架的分类 Java: Juint.TestNG Python: unni ...

  4. python单元测试断言_Python单元测试框架之pytest -- 断言-阿里云开发者社区

    对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就 ...

  5. pytest测试框架(一):初识pytest

    一.pytest的简介 pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,容易上手. pytest可以和selenium.request,appium结合实现web自动 ...

  6. 一、Pytest自动化测试框架 — Pytest和unittest测试框架原理

    目录 前言 ###文章内容有配套的学习视频和笔记都放在了文章末尾### 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5 ...

  7. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

  8. Python单元测试框架之pytest 3 -- fixtures

    From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...

  9. Python热门单元测试框架对比:pytest和unittest还傻傻分不清楚?

    前言 对于我们测试来说,做自动化测试需要编写测试用例,编写测试用例就会使用到单元测试模块,常见的python单元测试模块有unittest,pytest,nose等,但是听说过最多的也就属于pytes ...

最新文章

  1. Linux C编程--进程间通信(IPC)5--System V IPC 机制3--共享内存
  2. 易天光通信ETU 25G SFP28光模块规格参数
  3. QDU-GZS and String
  4. 谷歌Android无障碍套件,谷歌为无障碍套件添加盲文键盘:无需额外硬件就能打字...
  5. 项目管理基础:系统评价相关知识
  6. 为什么博导都希望,自己的博士生毕业也去高校当老师?
  7. 归并排序--Java
  8. java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)
  9. 【HDOJ】4541 Ten Googol
  10. 免费人脸识别工具可以跟踪社交媒体网站上的人
  11. 打油诗 看《大上海》
  12. biodist r语言_R语言 Biostrings包 pairwiseAlignment()函数中文帮助文档(中英文对照)
  13. SYNCHRONIZE_DRAIN
  14. 4.数据库表的高级查询
  15. 天津西站,座才几个?
  16. python给每个key添加数据_一文看懂Python collections模块的高效数据类型
  17. 离散分布的分布函数_数据分析|概率分布
  18. 盖亚绘制的星图里,藏着银河系不为人知的混乱过去
  19. 钉钉微应用PC开发版调试
  20. 手机必备应用:狐猴浏览器,一站式开启浏览器的所有用法

热门文章

  1. IP冲突解决解决方法
  2. 苹果用的充电宝有什么推荐吗?苹果手机充电宝推荐
  3. Java容器的常用组件
  4. 组播学习之——IGMP协议简介
  5. 中信银行--面试记录
  6. win10 x64中inlineHook SSDT里面的函数
  7. ctkPlugin插件系统实现项目插件式开发
  8. 如何在KEIL中使用MicroLIB
  9. 年轻就要勇敢闯荡校园招聘会PPT模板
  10. Bootstrap3博客网站模板