zoukankan      html  css  js  c++  java
  • pytest官网文档の第一章:安装和快速开始

    1.1 安装

    • 安装命令
    pip install pytest

    • 查看版本
    pytest --version

     1.2 创建第一个测试函数

    • 测试代码如下:
    # -*- coding: utf-8 -*-
    # 开发人员   :RayChou
    # 开发时间   :2019-10-12  10:27
    # 文件名称   :test_simple.PY
    # 开发工具   :PyCharm
    def func(x):
        return x + 1
    
    def test_answer():
        assert func(3) == 5
    • 执行结果如下:
    (venv) D:workspacedemo1	est_module>pytest
    =========================================================================================================================== test session starts ===========================================================================================================================
    platform win32 -- Python 3.6.5, pytest-5.2.1, py-1.8.0, pluggy-0.13.0
    rootdir: D:workspacedemo1	est_module
    collected 1 item
    
    test_simple.py F                                                                                                                                                                                                                                                     [100%]
    
    ================================================================================================================================ FAILURES =================================================================================================================================
    _______________________________________________________________________________________________________________________________ test_answer _______________________________________________________________________________________________________________________________
    
        def test_answer():
    >       assert func(3) == 5
    E       assert 4 == 5
    E        +  where 4 = func(3)
    
    test_simple.py:10: AssertionError
    ============================================================================================================================ 1 failed in 0.12s ============================================================================================================================
    
    (venv) D:workspacedemo1	est_module>

     1.3 执行多个测试用例

    pytest通过检测test_module模块下以test_xxx.py和xxx_test.py命名的文件,并识别以test_xxx命名的函数并执行。所以如果一个目录下有多个符合命名规则的文件,则会批量加入执行队列;

     1.4 断言特定异常

    • 测试代码
    # -*- coding: utf-8 -*-
    # 开发人员   :RayChou
    # 开发时间   :2019-10-12  10:39 
    # 文件名称   :test_sysexit.PY
    # 开发工具   :PyCharm
    import pytest
    
    def f():
        raise SystemExit(1)
    
    def test_mytest():
        with pytest.raises(SystemExit):
            f()
    • 使用安静模式(添加参数q,quiet)执行
    (venv) D:workspacedemo1	est_module>pytest -q test_sysexit.py
    .                                                                                                                                                                                                                                                                    [100%]
    1 passed in 0.03s
    
    (venv) D:workspacedemo1	est_module>

     1.5 同一个类中组合多个测试用例

    • 测试代码
    # -*- coding: utf-8 -*-
    # 开发人员   :RayChou
    # 开发时间   :2019-10-12  10:46 
    # 文件名称   :test_class.PY
    # 开发工具   :PyCharm
    class TestClass:
        def test_one(self):
            x = "this"
            assert "h" in x
    
        def test_two(self):
            x = "hello"
            assert hasattr(x, "check")
    • 执行结果
    (venv) D:workspacedemo1	est_module>pytest -q test_class.py
    .F                                                                                                                                                                                                                                                                   [100%]
    ================================================================================================================================ FAILURES =================================================================================================================================
    ___________________________________________________________________________________________________________________________ TestClass.test_two ____________________________________________________________________________________________________________________________
    
    self = <test_module.test_class.TestClass object at 0x0000000003463E10>
    
        def test_two(self):
            x = "hello"
    >       assert hasattr(x, "check")
    E       AssertionError: assert False
    E        +  where False = hasattr('hello', 'check')
    
    test_class.py:13: AssertionError
    1 failed, 1 passed in 0.11s
    
    (venv) D:workspacedemo1	est_module>

     1.6 功能测试中获取一个唯一的临时路径

    • 执行代码
    # -*- coding: utf-8 -*-
    # 开发人员   :RayChou
    # 开发时间   :2019-10-12  11:00 
    # 文件名称   :test_tmpdir.PY
    # 开发工具   :PyCharm
    
    def test_needfiles(tmpdir):
        print(tmpdir)
        assert 0
    • 执行结果
    (venv) D:workspacedemo1	est_module>pytest test_tmpdir.py
    =========================================================================================================================== test session starts ===========================================================================================================================
    platform win32 -- Python 3.6.5, pytest-5.2.1, py-1.8.0, pluggy-0.13.0
    rootdir: D:workspacedemo1	est_module
    collected 1 item
    
    test_tmpdir.py F                                                                                                                                                                                                                                                     [100%]
    
    ================================================================================================================================ FAILURES =================================================================================================================================
    _____________________________________________________________________________________________________________________________ test_needfiles ______________________________________________________________________________________________________________________________
    
    tmpdir = local('C:\Users\raychou\AppData\Local\Temp\pytest-of-raychou\pytest-6\test_needfiles0')
    
        def test_needfiles(tmpdir):
            print(tmpdir)
    >       assert 0
    E       assert 0
    
    test_tmpdir.py:9: AssertionError
    -------------------------------------------------------------------------------------------------------------------------- Captured stdout call ---------------------------------------------------------------------------------------------------------------------------
    C:Userszhoulei17344AppDataLocalTemppytest-of-zhoulei17344pytest-6	est_needfiles0
    ============================================================================================================================ 1 failed in 0.12s ============================================================================================================================
    
    (venv) D:workspacedemo1	est_module>

    从执行结果中我们可以知道当传入tmpdir时,pytest会在执行程序前,会为程序申请资源并且创建一个唯一的临时路径。

  • 相关阅读:
    为什么常见编程语言中数组的索引都是从0开始?
    【转载】计算机经典论文选读
    Jetbrains-别人家的公司
    2019.9沉淀反思
    HttpUrlConnection流传输问题(正确传输包含中文的JSON字符串)
    记一次SpringBoot启动缓慢问题的解决过程
    Maven发布jar包到私库
    2016年回顾
    Java集合框架源码分析之ArrayList
    关于哔哩哔哩直播姬
  • 原文地址:https://www.cnblogs.com/raychou1995/p/11660338.html
Copyright © 2011-2022 走看看