Pytest学习记

1.Pytest简介

1.1前言

pytest是一个单元测试框架。

  • 什么是单元测试?

    • 在软件开发当中,针对软件最小单位(函数、方法)进行正确性的检验检查测试。
  • 常见单元测试框架

    • java:junit和testing
    • python:unittest和pytest
  • 单元测试框架主要做什么?

    1. 测试发现:从多个文件里面去找到我们的测试用例
    2. 测试执行:按照一定的规则和顺序执行,并生成结果
    3. 测试判断:通过断言判断预期结果和实际结果的差异
    4. 测试报告:统计测试进度,耗时,通过率,生成测试报告
  • 单元测试框架和自动化测试框架有什么关系?
    单元测试框架和自动化测试框架是两种不同类型的测试框架。单元测试框架只是自动化测试框架的组成部分之一。

    单元测试框架是一种用于编写和执行单元测试用例的工具,它主要用于测试软件的单独部分,如函数、模块等。单元测试框架的目的是验证软件的功能是否正确,并且发现软件中的错误和问题。

    自动化测试框架是一种用于编写和执行自动化测试用例的工具,它主要用于测试软件的完整功能,如用户界面、流程等。自动化测试框架的目的是验证软件的功能是否正确,并且检测软件的性能、可靠性和安全性。

    • 什么是自动化测试框架?
      • 指一组规范和约定,用于帮助设计、编写和维护自动化测试用例的工具。自动化测试框架通常包括测试用例的组织方式、测试数据的存储方式、测试用例的执行方式、测试结果的处理方式等。
    • 自动化框架作用:
      1. 提高测试效率,降低维护成本。
      2. 减少人工干预,提高测试的准确性,增加代码的重用性。
      3. 核心思想是让不懂代码的人也能通过这个框架去实现自动化测试。

1.2pytest简介

  1. pytest是一个成熟的python的单元框架,比unittest更灵活、更容易上手。
  2. pytest可以和selenium、request、appium结合实现web自动化、接口自动化、app自动化。
  3. pytest可以实现测试用例的跳过以及reruns失败用例重试。
  4. pytest可以和allure生成美观的测试报告。
  5. pytest可以和Jenkins持续集成
  6. pytest有很多强大的插件:
    • pytest-html 生成html格式测试报告
    • pytest-xdist 测试用例分布式执行,多cup分发
    • pytest-ordeing 可以改变测试用例执行顺序
    • allure-pytest 生成美观的测试报告

1.3快速下载pytest插件方法

  1. 在项目下创建requirements.txt文件,写入需要导入的插件名称
  2. 在Terminal中输入 以下命令就ok了

    pip install -r requirements.txt
    在这里插入图片描述

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

  1. 模块名必须以test_开头或者_test结尾。
  2. 测试类必须以Test开头,并且不能有init方法。
  3. 测试方法必须以test开头。
    在这里插入图片描述

1.5pytest测试用例的运行方式

执行方式一:主函数模式-通过maiin函数执行

  • 执行所有 pytest.main()在这里插入图片描述
  • 运行指定模块:pytest.main(['test_login.py'])
    在这里插入图片描述
    - 运行指定目录:pytest.main(['-vs','./interface_testcase'])
    在这里插入图片描述
    - 运行指定方法(nodeid方式:模块名,分隔符(::),类名,方法名,函数名)pytest.main(['-vs','./interface_testcase/test_insert.py::test'])
    在这里插入图片描述

执行方式二:命令行模式-Terminal输入pytest

  • 执行所有 pytest
    在这里插入图片描述
    - 执行指定模块pytest test_login.py
    在这里插入图片描述
1.5.1执行参数详解

参数用于pytest.main()

  • -s 表示输出调试信息
  • -v 显示更详细信息
  • -vs 可以同时使用vs
    pytest.main(['-vs'])
  • -n支持多线程或者分布式运行测试用例,可以减少运行时间
    如:pytest -vs -n 2pytest.main(['-vs','-n=2'])表示2个线程运行用例
    在这里插入图片描述
  • -reruns NUM:失败用例自动重跑2次,如:pytest.main(['-vs','--reruns=2','./testcase'])
  • -x:执行到一个失败用例就停止
    • –maxfail 2 失败2个的时候才停止
  • -k:根据测试用例的部分字符串指定执行测试用例,如:pytest.main(‘-k="aaa"’)执行包含aaa的测试用例

执行方式三:通过读取pytest.ini配置文件运行
pytest.ini 是pytest单元测试框架的核心配置文件。
1. 位置一般放在项目的根目录,文件名称为pytest.ini
2. 文件编码格式必须是 ANSI
3. 文件作用:改变pytest默认的行为
4. 运行规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件。
5. 文件内容展示:
在这里插入图片描述

1.6pytest执行测试用例的顺序是什么

  • unittest:ascll的大小来决定执行的顺序
  • pytest:默认从上到下
    • pytest.mark.run(order=NUM)可以根据NUM的大小控制执行顺序 所属插件:pytest-ordeing
    # 
    @pytest.mark.run(order=1)
    def test_01(self):
       .....
    
    @pytest.mark.run(order=3)
    def ......
     @pytest.mark.run(order=2)
    def .....
    

1.7如何分组执行用例(冒烟、分模块执行、分接口和web执行)

  1. 方法上标记模块
@pytest.mark.smoke
def test_01(self):
.....

@pytest.mark.uesr
def test_02(self):
 .....
  1. 分模块的执行方式
  • pytest.ini文件配置执行

    • markers =
      smoke:标记了smoke的模块
      uesr:标记了user的模块
      在这里插入图片描述
  • 命令行执行

    pytest -vs -m "smoke or user"
    表示执行smoke和user模块

1.8pytest跳过测试用例

  1. 无条件跳过
    用例方法使用下面注解
@pytest.mark.skip(reason = "跳过原因")
def test_01(self):
 ....

在这里插入图片描述
2. 有条件跳过,如下
在这里插入图片描述

1.9生成测试报告

  • 参数--html ./reprot/reprot.html
    • ./reprot/reprot.html代表生成文件路径
      在这里插入图片描述
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值