ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pytest学习笔记 01

2021-11-19 10:00:44  阅读:179  来源: 互联网

标签:01 py 笔记 assert 用例 pytest test 执行


pytest是一个单元测试框架,在python中比较主流,另一个比较主流的就是unittest。

可以来干嘛呢?可以做自动化,接口也行,UI也可以,可以配合其它的测试工具(或模块)丰富自身,比如测试报告、断言和参数化;可以做别的(目前我没有接触,手动捂脸)。

unittest这个是官方库,python自带的框架;而pytest是在unittest基础上进一步封装的,可以兼容unittest脚本。

pytest的有点有什么呢?

1.资料丰富、入门简单、容易上手;

2.支持简单的单元测试和复杂的功能测试;

3.支持参数化;

4.执行过程用例可跳过,可标记预期失败;

5.支持失败case重复执行;

6.兼容unittest编写的case;

7.可使用html测试报告;

8.可与jenkins集成;

9.第三方插件丰富,支持自定义扩展。

怎么安装呢?

        cmd中操作:

pip install pytest
pip install pytest --default-timeout=6000 -i https://pypi.tuna.tsinghua.edu.cn/simple  # 如果超时可以更换清华源

  安装完成后查看pytest版本:

pytest --version

  

 

 pytest编写用例的时候需要按照规范来编写,否则用例将不能被pyterst识别并执行:

  • 文件名要以test_*.py或*_test.py命名
  • 函数以test_开头
  • 类以Test开头,且不能包含__init__方法
  • 方法(类里的)以test_开头
  • 所有的包必须有__init__.py文件

这里我用的pycharm进行测试的,所以要在pycharm中设置一下执行框架,方便操作。

 用例的执行规则(cmd中执行pytest命令)

可以使用命令行参数执行 pytest -h 或者 pytest -help查看 pytest 帮助文档

 

 下面说一下常用的参数

  • 某个目录下的所有用例
    • pytest
  • 执行当前文件夹下的所有文件
    • pytest 文件名/  
  • 执行具体的某一个测试文件
    • pytest 脚本.py  
  • 匹配用例名称
    • pytest -k "case" test_one.py   # 执行用例名称包含case的所有用例  
    • pytest -s -k "not case" test_one.py   # 执行用例名称不包含case的用例
    • pytest -s -k "unionPay or weChat" test_one.py   # 执行用例名称包含unionPay或者weChat的用例
  • 按节点运行
    • pytest test_moudle.py::test_func   执行某个模块下的某个方法
    • pytest test_module.py::TestClass::test_func  执行某个模块下某个类下的某个方法
  • 遇到错误是停止测试 -x
    • pytest strart.py -x
  • 当用例错误个数达到指定数量时停止测试 --maxfail=num
    • pytest start.py --maxfail=6
  • 详细打印用例的执行结果  -s,  -v更详细
    • pytest -s start.py
  • 简单打印用例执行结果
    • pytest -q start.py    

 常用的断言

pytest使用python自带的assert关键字进行断言: assert A==B   如果A==B为True,断言通过,A==B为False,单元失败,用例执行失败。

先看一个断言成功的例子:

 

class TestClass(object):

    # def __init__(self):
    #   print('初始化函数')
    def test_func1(self):
        print('测试用例1==========')
        result = 10
        assert result == 10

 执行结果如下:

 

 在看一下断言失败的情况:

 

 

执行结果如下:

 

 总结一下pytest断言常用的几种情况:

  • assert A: 判断 A 是否为真
  • assert not A: 判断 A 是否为假
  • assert A in B: 判断B是否包含A
  • assert A==B: 判断A是否等于B
  • assert A!=B: 判断A是否不等于B

结合上面的断言,用例执行完成后可以有一下几种状态:

  • passed:执行通过
  • failed:执行失败,也就是断言失败
  • error:代码问题导致执行错误
  • xfail:预期失败,结合@pytest.mark.xfail()使用

 

标签:01,py,笔记,assert,用例,pytest,test,执行
来源: https://www.cnblogs.com/tomreddle/p/15419854.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有