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笔记

一、单元测试&自动化测试

1.1.单元测试框架是什么

单元测试是指在软件开发过程中,针对软件的最小单元(函数、方法)进行正确性的检查测试

1.2.单元测试框架有哪些

1、java:junit和testng

2、python:unittest和pytest

...

1.3.单元测试框架做什么

1、测试发现:从多个文件中去找到我们的测试用例

2、测试执行:按照一定的顺序和规则去执行、生成结果

3、测试判断:通过断言判断预期结果和实际结果的差异

4、测试报告:统计测试进度、耗时、通过率,生成测试报告文件

1.4.自动化测试框架

简单描述:

1、单元测试框架:自动化测试框架的组成部分之一;

2、pom设计模式:自动化测试框架的组成部分之一;

3、还包括数据驱动...关键字驱动...全局配置文件封装...日志监控...selenium...requests二次封装...断言...报告...and so on···

二、pytest简介

2.1.pytest是一款非常成熟的单元测试框架,比unittest更加灵活且容易上手

2.2.pytest可以结合selenium、appium、requests等实现web自动化、app自动化、接口自动化等

2.3.pytest可以实现测试用例跳过、失败用例重试等友好功能

2.4.pytest可以集成allure生成非常美观的测试报告,结合Jenkins进行持续集成

2.5.pytest有很多非常强大且实用的插件

例:(放到requirements.txt中统一安装)

pytest

pytest-html(生成html格式的自动化测试报告)

pytest-xdist(测试用例分布式执行,多cpu分发)

pytest-ordering(改变测试用例的执行顺序)

pytest-rerunfailures(用力失败后重新执行)

allure-pytest(用于生成美观的测试报告)

...

三、pytest使用

3.1命名规范

1.模块名以test_开头或_test结尾

2.类名以Test开头

3.方法名以test_开头

注:以上为默认执行规范,可自定义,详见后面pytest.ini章节

# demo_test.py
import pytest


class TestDemo:
    def test_zhang1(self):
        a = "犬夜叉"
        b = "犬夜叉"
        assert a == b
    def test_zhang2(self):
        a = "犬夜叉"
        b = "鬼灭之刃"
        assert a == b

3.2pytest运行

3.2.1pytest参数详解:

--指定模块、类、方法运行(也称为使用nodeId指定运行用例)

pytest 包名::模块名::类名::方法名

注:指定到哪个node节点,就会执行那个节点所包含的用例范围

# linux
pytest folderPath/folderName::fileName.py::className::funcName
# windows
pytest folderPath\\folderName::fileName.py::className::funcName

--重点参数详解

-q或--quiet:简化模式,

-s或--capture=no:显示函数调试信息(包括print)

-v或--verbose:显示模块名、类名、方法名

-n x:多线程或分布式运行测试用例,x为配置线程数

--reruns=n:失败重试n次

-x:只要有一条用例失败,则停止运行测试

--maxfail=n:出现n条用例失败后停止运行

--lf或--last-faild:出现失败case,则下一条case跳过

-k "str":指定执行方法名中包含str的用例

--ff或--failed-first:运行完失败的案例后继续执行后续的案例

--html=reportPath/report.html:在指定目录下生成html报告文件

--junit-xml=path:输出xml文件格式,在与jenkins做集成时使用

--result-log=logpath:将最终结果保存在本地文件中,logpath为本地log路径

# 分配2个线程去运行demo_test.py中DemoTest类中方法名包含字符串"zhang"的用例
pytest -vs ./TestCases/demo_test.py::DemoTest -n 2 -k "zhang" --html=report/report.html

report.html样例

3.2.2运行模式

--主函数模式

# demo_test.py
import pytest
import time

class TestDemo:
    def test_zhang1(self):
        a = "犬夜叉"
        b = "犬夜叉"
        time.sleep(3)
        assert a == b
    def test_zhang2(self):
        a = "犬夜叉"
        b = "鬼灭之刃"
        time.sleep(3)
        assert a == b
        
        
if __name__ == "__mian__":
    # 主函数模式传参方式:放入一个list[]中,参数用','分隔
    pytest.main(['demo_test.py','-s','-v'])
    # 或pytest.main(['demo_test.py','-vs'])是同样效果

--命令行模式

terminal中进入测试用例目录执行pytest+参数命令,如3.2.1.1.2中的示例相同

# 分配2个线程去运行demo_test.py中DemoTest类中方法名包含字符串"zhang"的用例
pytest -vs ./TestCases/demo_test.py::DemoTest -n 2 -k "zhang"

--配置文件模式

1.简介

使用pytest.ini配置文件去设置pytest的行为,pytest.ini是单元测试框架的核心配置文件。

位置:项目根目录

编码:ANSI

命名:不允许修改,必须为pytest.ini

示例

# pytest.ini
[pytest]
# 参数配置:根据自己需求去配置即可
addopts = -vs
# 测试用例文件夹
testpaths = ./TestCase
# 配置测试模块
python_files = test_*.py
# 配置测试类
python_classes = Test*
# 配置方法名
python_functions = test
# 注:以上配置前缀规则可随意修改
markers = 
    smoke:冒烟用例
    ISHOP:ishop测试用例
    XHMD:小恒买单用例
    xhmd_pay:小恒买单支付模块
    xhmd_coupon:小恒买单优惠券模块
    JYFQ:教育分期用例
    PAYMENT:支付中台用例

执行:

import pytest


class TestDemo:

    @pytest.mark.run(order=2)
    @pytest.mark.XHMD
    def test_zhang1(self):
        a = "犬夜叉"
        b = "犬夜叉"
        assert a == b

    @pytest.mark.run(order=1)
    @pytest.mark.ISHOP
    def test_zhang2(self):
        a = "犬夜叉"
        b = "鬼灭之刃"
        print("调试信息")
        assert a == b
# 执行标记为ISHOP和XHMD的用例,即test_zhang1和test_zhang2;其他会按照pytest.ini文件中的设置执行
pytest -m "ISHOP or XHMD"

3.3pytest装饰器

3.3.1执行顺序

--装饰器:@pytest.mark.run(order=n):n为自定义执行顺序值

unittest中执行用例顺序是根据ASCII码大小去执行,pytest执行用例默认是顺序执行,可以使用装饰器去指定顺序

import pytest


class TestDemo:

    @pytest.mark.run(order=2)
    def test_zhang1(self):
        a = "犬夜叉"
        b = "犬夜叉"
        assert a == b

    @pytest.mark.run(order=1)
    def test_zhang2(self):
        a = "犬夜叉"
        b = "鬼灭之刃"
        print("调试信息")
        assert a == b

3.3.2标记分组

--装饰器:@pytest.mark.关键字

import pytest


class TestDemo:

    @pytest.mark.run(order=2)
    def test_zhang1(self):
        a = "犬夜叉"
        b = "犬夜叉"
        assert a == b

    @pytest.mark.run(order=1)
    @pytest.mark.XHMD
    def test_zhang2(self):
        a = "犬夜叉"
        b = "鬼灭之刃"
        print("调试信息")
        assert a == b

......完善更新ing?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:25:01  更:2022-01-03 16:25:25 
 
开发: 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 4:47:47-

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