IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Pytest单元测试框架学习总结(一) -> 正文阅读

[开发测试]Pytest单元测试框架学习总结(一)

介绍

pytest是一个非常成熟的Python单元测试框架,比自带的unittest更简洁,效率更高

特点

  • 简单灵活易上手,能够支持简单的大暖测试和复杂的功能测试
  • 有丰富的第三方插件pytest-selenium,pytest-html,pytest-rerunfailures、pytest-xdist等
  • 测试用例指定跳过,或对某些预期失败的case标记为失败
  • 可以很好的和Jenkins集成,实现持续集成
  • 支持与allure结合自动化生成测试报告
  • 支持运行由nose、unittest编写的测试用例
  • 支持参数化方式,DDT数据驱动

安装

在线安装

pip install [-u] pytest

#-u 是指针对已安装pytest的更新

Q:公司没有外网,也不能拷贝,也不能通过邮件传送,如何离线安装?
离线安装
pip install pytest -i 镜像地址
因为我们是华为外包公司,所以用的是华为镜像地址,才可以下载

Pytest用例规范

  • 所有测试用例文件必须以test开头或结尾
  • 所有测试类必须以Test开头,并且不能有__init__()方法
  • 测试函数或者测试类中的用例方法必须以test_开头
  • 测试文件中必须导入pytest
  • 在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行

实例:

 import pytest
class TestJDFlow():
    #类中不能有__init__方法
    def test_flow_a(self):
        print('1111')
        assert 1==1
    def test_flow_b(self):
        print('2222')
        assert 1==1
    def test_flow_c(self):
        print('3333')
        assert 1==1

if __name__ == '__main__':  #调用main函数执行测试,也可以不写
    pytest.main(['-s','test_jd_flow.py'])

Pytest用例文件运行

1、测试类主函数模式

在测试脚本的py文件中,加入main函数调用,默认

pytest.main(['-s','testjd.py'])#
#在模块写上这一句话 然后右键执行
-s:表示输出用例执行的详细结果
-testjd.py:是要执行的脚本名称,一般都是当前模块名称

在这里插入图片描述
注意:main函数两种写法都可以 ,参数也可以修改添加其他的

如果文件中不写main函数, 直接右键执行模块文件后,也能执行成功,只是不会打印输出信息了
在这里插入图片描述

2、命令行执行
#模块中不写main函数,直接在命令行执行,也可以加参数
进入到文件所在文件目录,选中Terminal
在这里插入图片描述

pytest 可选参数 [文件路径/[测试文件名]

如果不写文件路径和文件名,则执行当前目录及子目录下的所有命名规则符合pytest用例的文件
只指定测试模块(文件名):则执行对应的测试模块文件
只指定测试目录:则执行该目录下和子目录下的所有符合条件的文件
【可能遇到的问题】
如果test脚本执行失败,修改下面的配置setting–tools,将Testing中的默认值改成pytest就OK了(默认的可能是unittest)
在这里插入图片描述

用例执行顺序

同一个模块内的用例,按定义顺序从上往下执行

用例执行控制

可选参数即控制用例执行的

  • -s:显示print的信息,可用于调试脚本
  • -x: 有一条用例失败,就停止运行
import pytest
class TestJDFlow():
    #类中不能有__init__方法
    def test_flow_a(self):
        print('1111')
        assert 1==1
    def test_flow_b(self):
        print('2222')
        assert 1>1
    def test_flow_c(self):
        print('3333')
        assert 1==1

如上代码执行结果:
执行到第二条用例,断言失败,然后就停止了,第三条用例没有执行,所以只有1passed,1failed
在这里插入图片描述

在这里插入图片描述

  • –maxfail=n:失败用例有n个时,就停止测试
  • -k :通过关键字表达式过滤执行
    文件名、类名、方法名中能匹配上关键字的用例
说明:
	如果文件名符合,就会执行所有类下面的所有用例
	如果文件名不符合,但类名符合,会执行所有这个类下面的所有用例
	如果文件名不符合,类名不符合,则判断方法名是否符合,如果方法名符合,则只执行这条用例;如果方法名不符合,则不执行

多个关键字条件用and 或and not,关键字必须用双引号;
#如果只有一个关键字,不需要写引号

pytest -k “demo and jd”
pytest -k demo

【遇到的问题】:
1、我在模块文件中写了-s参数(都写了下面代码),但是我用命令行执行时,仍然需要加-s参数,才会显示print内容
此时谁是当前执行文件 main?
在这里插入图片描述 2、-s 和-k组合时,必须-s 在-k 前面,否则就会报错
在这里插入图片描述

  • node id指定测试用例–待验证
    nodeid指由模块名、分隔符、类名、方法名、参数构成

①运行指定用例

pytest test_flow.py::test_func

②运行指定方法

pytest test_flow.py::TestClass::test_method

  • -m 用@pytest.mark.xxx装饰函数,执行时通过-m xxx指定要执行的用例
  • –pyargs :指定包,执行包下所有用例

【遇到的问题】
1、执行pyargs 导入包后,报错
直接选中包右键,运行 是可以运行成功的,但是在命令行输入后,就报错
,提示missing init.py文件(但是我明明有这个文件)
【解决办法】
路径不对,在当前包路径下 执行这个命令 就不行
返回上一层目录 就OK了
2、命令中的包名大小写必须与目录中的一致 在这里插入图片描述

  • 多进程运行
    当case量很多时,运行时间也会变的很长;多进程同时运行,缩短脚本运行时间
    需要先安装 pytest-xdist 插件
    pip install -U pytest-xdist
    执行:
    pytest 文件名 -n N# N为并发进程数

  • 重试运行
    对于运行失败的用例,重新运行N次
    需要先安装pytest-rerunfailures
    pip install -U pytest-rerunfailures
    执行命令:
    pytest 文件名 --reruns Num #Num为重试的次数

【遗留待验证问题】
setup和teardown后面不写代表的是method?如果setup和setup_method同时存在的结果如何?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 16:01:27  更:2021-12-11 16:03:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 6:26:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码