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 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python自动化测试框架——pytest 学习 -> 正文阅读

[Python知识库]Python自动化测试框架——pytest 学习

1、概念

????????pytest 是 Python 的一种单元测试框架,同自带的UnitTest 测试框架类似,相比于 UnitTest 框架使用起来更简洁,效率更高。

2、特点

  • 简单易上手,文档丰富,入门简单,文档中有很多实例可以参考
  • 支持简单的单元测试和复杂的功能测试
  • 支持参数化
  • 执行测试过程中可以将某些测试跳过,或者对某些预期失败的 Case 标记成失败
  • 支持重复执行失败的 Case
  • 支持运行由 Nose,UnitTest 编写的测试Case(UnitTest代码可以直接用pytest运行)
  • 具有很多第三方插件,并且可以自定义拓展
  • 方便的和持续集成工具集成

3、安装

安装:pip3 install pytest

查看:pip show pytest

确认版本:pytest --version

或者直接在pycharm中安装pytest

注:如果出现pytest 命令不可用,则需要使用管理员身份打开终端重新安装pytest

4、代码格式

class Testxxx:    # Test 开头的测试类

    def testxxx(self):    # test 开头的测试方法
        pass

5、运行方式

(1)命令行模式

命令行中执行 pytest -s test.py(文件名)

(2)主函数模式

在Python文件中增加主函数:

if __name__ == '__main__'
    pytest.main(['-s',"文件名"])

?-s 表示支持控制台打印,如果不加 print不会出现任何内容

6、特殊方法(跟 UnitTest 框架中 fixture 效果一样)

(1)方法级别

# 初始化(前置处理)
def setup(self):           --> 首先自动执行
 
# 销毁(后置处理)
def teardown(self):        --> 最后自动执行
 
# 运行于测试方法的始末,即:运行一次测试方法就会运行一次setUp和tearDown

(2)类级别

# 初始化(前置处理)
def setup_class(self):        --> 首先自动执行 
 
# 销毁(后置处理):  
def teardown_class(self):     --> 最后自动执行
 
# 运行于测试类的始末,即:每个测试类只会运行一次setup_class和teardown_class

7、配置文件

应用场景:使用配置文件后可以快速的使用配置的项来选择执行哪些测试模块

使用方法:在根目录创建 pytest.ini 文件(tox.ini 或者 setup.cfg 文件也可以)

文件内容:

[pytest]
testpaths = ./study/pytest    # 文件搜索路径,即文件所在位置
addopts = -s                  # 添加命令行参数
python_files = test*.py       # 指定文件名称
python_classes = Test*        # 指定类名称
python_functions = test*      # 指定方法名称

注:

1. 在Windows 系统下,pytest 配置文件中,不允许写注释信息

2. 一个工程只需要一个 pytest 配置文件,并且需要保证文件名正确

3. 一般情况下只需要将 pytest 配置文件置于工程根目录下

4. 配置有 pytest 配置文件的工程,只需要打开命令行,输入 pytest 指令即可执行测试

8、 pytest 常用插件

(1)生成 pytest-html 测试报告插件

安装:通过 pip3 install pytest-html 进行安装或者通过 pycharm 安装插件 pytes-html?

使用:在配置文件中的命令行参数 addopts 中增加 --html=报告路径/report.html?

????????? 如果要合并css文件则在后面添加 --self-contained-html?

(2)控制 pytest 函数执行顺序插件

安装:通过 pip3 install pytest-ordering 进行安装或者通过 pycharm 安装插件 pytest-ordering?

使用:标记与被测试函数,@pytest.mark.run(order=x)

order无论全正还是全负,值越小优先级越高;正数负数同时存在时,正数优先级高

(3)pytest 失败重试插件

安装:通过 pip3 install pytest-rerunfailures 进行安装或者通过 pycharm 安装插件 pytest-rerunfailures?

使用:在配置文件中的命令行参数addopts 中增加 --reruns -n? (n决定重试的次数,不超过3)

9、 跳过操作

# 跳过测试函数
# 参数:
    # condition:跳过的条件,必传参数
    # reason:标注原因,必传参数
@pytest.mark.skipif(condition , reason=None)

使用:在需要跳过的测试脚本之上加上装饰器 @pytest.mark.skipif(condition,reason="xxx")?

10、参数化

# 数据参数化
# 参数:
    # argnames:参数名
    # argvalues:参数对应值,类型必须为可迭代类型,一般用list
@pytest.mark.parametrize(argnames,argvalues,indirect=False,ids=None,scope=None)

使用:在需要参数化的测试函数之上加上装饰器 @pytest.mark.parametrize(argnames,argvalues)?

单个参数示例:

import pytest

class Test1:

    @pytest.mark.parametrize("name",["小明","小李","小张"])
    def test_method(self,name):
        print(name)

多个参数示例:

import pytest

class TestLogin:
    # 拓展:另一种写法 
    # @pytest.mark.parametrize(("admin","passwd"),[("admin",123456),("test",456789)])
    @pytest.mark.parametrize("admin,passwd",[("admin",123456),("test",456789),("xxx","yyy")])
    def test_method(self,admin,passwd):
        print(admin)
        print(passwd)

11、断言

方法:系统自带的 assert xxx(UnitTest框架自带断言方法)

示例:

assert 1==2    # 判断是否相等

assert "name" in "my name is student"    # 判断是否包含

assert 2 > 1    # 判断大小

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:11:19  更:2022-10-22 21:14:47 
 
开发: 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/17 6:50:56-

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