009、pytest 基础汇总

 

 

一、编写测试用例:
  用例名称——>用例步骤——>预期结果——>实际结果——>前置、后置

  1、用例名称:要以  test_开头 ;

  2、用例步骤:即用例业务逻辑 ;

  3、断言:(实际和预期结果比对) assert 表达式( True/ False )  AssertError ;

    当出现用例 AssertError  或者 测试用例其他原因 raise 异常时,测试用例执行Fail ;

  4、用例呈现的2种形式:

    a、.py 下的函数,函数名以 test_ 开头 ;

    b、.py 下类里面的方法,方法名以 test_  开头 ;

  5、自动搜集测试用例:

    a、搜集目录 :在哪个文件目录下执行 pytest  命令,就在 哪个目录开始搜集测试用例 ;

    b、目录下的文件过滤: 文件名以 test_ 开头的 py文件,或者 文件名 以 _test 结尾的py 文件 ;

       目录下所有 .py 文件 的执行顺序是 按照 ASCII 码 顺序 ;

    c、.py 文件下的用例过滤:.py 文件下的函数, 函数名以 test_ 开头,

      所有测试用例  test_xx   是按照代码 自上而下的 顺序执行 ;

  6、pytest.main(['-s', '-v', 'test_dd.py'])   在  _.py  文件中添加 pytest.main() 的效果 和 在cmd 命令行执行效果一样 ;

 

 

 

a、当出现用例 AssertError  或者 测试用例其他原因 raise 异常时,测试用例执行Fail ;

示例代码如下:

def test_3():
    login = 'success'
    assert login == 'success'


# 除数不能为0 ,异常,测试用例执行Fail
def test_1():
    a = 10
    b = 0
    c = a / b
    login = 'success'
    assert login == 'success'

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day15\dd>pytest -sv
================================================= test session starts =================================================
platform win32 -- Python 3.8.6, pytest-5.4.3, py-1.10.0, pluggy-0.13.1 -- c:\skyworkspace\worktools\python\python38\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.8.6', 'Platform': 'Windows-10-10.0.19041-SP0', 'Packages': {'pytest': '5.4.3', 'py': '1.10.0', 'pluggy': '0.13.1'}, 'Plugins': {'allure-pytest': '2.9.43', 'html': '2.1.1', 'metadata': '1.11.0'}, 'JAVA_HOME': 'C:\\SkyWorkSpace\\WorkTools\\Java\\jdk1.8\\jdk1.8.0_271'}
rootdir: D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day15\dd
plugins: allure-pytest-2.9.43, html-2.1.1, metadata-1.11.0
collected 2 items

test_dd.py::test_3 PASSED
test_dd.py::test_1 FAILED

====================================================== FAILURES =======================================================
_______________________________________________________ test_1 ________________________________________________________

    def test_1():
        a = 10
        b = 0
>       c = a / b
E       ZeroDivisionError: division by zero

test_dd.py:11: ZeroDivisionError
=============================================== short test summary info ===============================================
FAILED test_dd.py::test_1 - ZeroDivisionError: division by zero
============================================= 1 failed, 1 passed in 0.16s =============================================

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day15\dd>

 

 

b、pytest.main(['-sv', 'test_dd.py']) :  在  _.py  文件中添加 pytest.main() 的效果 和 在cmd 命令行执行效果一样 ;

  或者  pytest.main(['-s', '-v', 'test_dd.py'])  ,参数以列表的形式 ;

代码如下:

import pytest

class TestDemo():

    def test_3(self):
        login = 'success'
        assert login == 'success'

    def test_2(self):

        login = 'success'
        assert login == 'success'

    def func_1(self):
        login = 'success'
        assert login == 'success'


class TestDemoAA():

    def test_3(self):
        login = 'success'
        assert login == 'success'

    def test_2(self):

        login = 'success'
        assert login == 'success'

    def func_1(self):
        login = 'success'
        assert login == 'success'


if __name__ == '__main__':
    pytest.main(['-sv', 'test_dd.py'])

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day15\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day15/dd/test_dd.py
============================= test session starts =============================
platform win32 -- Python 3.8.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day15\venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day15\dd
collecting ... collected 4 items

test_dd.py::TestDemo::test_3 PASSED
test_dd.py::TestDemo::test_2 PASSED
test_dd.py::TestDemoAA::test_3 PASSED
test_dd.py::TestDemoAA::test_2 PASSED

============================== 4 passed in 0.01s ==============================

Process finished with exit code 0

 

上一篇:手机钉钉页面跳转


下一篇:摸鱼浮夸