zoukankan      html  css  js  c++  java
  • python单元测试框架——pytest

    官网:https://docs.pytest.org/en/latest/

    pytest帮你写出更好的程序

    1、An example of a simple test:(一个简单的例子),命名为test_pytest1.py

    1 def funx(x):
    2     return x + 1
    3 
    4 
    5 def test_answer():
    6     assert funx(2) == 5

    运行:

    • 进入python脚本路径:pytest test_pytest1.py

      root@localhost:/home/ranxf/Python3单元测试/demo# pytest test_pytest1.py
    ============================= test session starts ==============================
    platform linux -- Python 3.5.2, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
    rootdir: /home/ranxf/Python3单元测试/demo, inifile:
    collected 1 item                                                                

    test_pytest1.py F

    =================================== FAILURES ===================================
    _________________________________ test_answer __________________________________

        def test_answer():
    >       assert funx(2) == 5
    E       assert 3 == 5
    E        +  where 3 = funx(2)

    test_pytest1.py:8: AssertionError
    =========================== 1 failed in 0.02 seconds ===========================

    • 进入python脚本路径:pytest -q test_pytest1.py(加一个参数-q),运行结果:

    root@localhost:/home/ranxf/Python3单元测试/demo# pytest -q test_pytest1.py
    F
    =================================== FAILURES ===================================
    _________________________________ test_answer __________________________________

        def test_answer():
    >       assert funx(2) == 5
    E       assert 3 == 5
    E        +  where 3 = funx(2)

    test_pytest1.py:8: AssertionError
    1 failed in 0.02 seconds

    两种运行结果有一点差异,就是少了一些版本信息。

    3、一个测试类中创建多个测试用例:

     1 # 一个测试类种创建多个测试用例
     2 
     3 
     4 class TestClass:
     5     def test_one(self):
     6         x = "this"
     7         assert "s" in x
     8 
     9     def test_two(self):
    10         x = "hello"
    11         assert x == "hi"
    View Code

    4、pytest同样可以提供main()函数来执行测试用例:

    目录结构:

    """
    pytest中同样提供了main() 来函数来执行测试用例。

    pytest/

    ├── test_pytest1.py

    ├── test_pytest2.py

    └── test_main.py
    """

    注:主函数中的文件名只能是test_main.py(如果改为test_pytest3这种格式,将不会遍历执行同路径的其他用例)
    import pytest
    
    
    def test_main():
        assert 5 != 5
    
    if __name__ == "__main__":
        # pytest.main()  # 遍历相同目录下的所以test开头的用例
        # pytest.main("-q test_main.py")  # 指定测试文件
        pytest.main("/root/Documents/python3_1000/1000/python3_pytest")  # 指定测试目录

    5、pytest生成Html格式的测试报告:

      python3 -m pytest test_main.py --html=report/test_main.html

  • 相关阅读:
    js scrollTop到达指定位置!
    ajax图片加载,complete
    OpenShift 集群搭建指南
    net core ef code first 使用步骤
    Web Api Json 序列化 属性被加上 k__BackingField 解决办法
    [ASP.NET MVC 5 高级编程] 第4章 模型
    [ASP.NET MVC 5 高级编程] 第3章 视图
    [Java学习笔记] Java核心技术 卷1 第六章 接口与内部类
    [Java学习笔记] Java核心技术 卷1 第五章 继承
    [Java学习笔记] Java核心技术 卷1 第四章 对象与类
  • 原文地址:https://www.cnblogs.com/ranxf/p/7764568.html
Copyright © 2011-2022 走看看