CSDN博客地址

pytest测试框架简介(一)

pytest是python的一种单元测试框架,与unittest测试框架类似,但是比unittest框架使用起来更加简洁,效率更高.

安装pytest: pip install pytest

框架使用流程

创建如下源码文件test_1.py

def add(x, y):
    return x+y

def test_add():
    assert add(1, 2) == 3

运行pytest文件,三种命令运行方式

1: 直接运行 pytest

2: 直接运行 py.test

3:直接运行  python -m pytest

 pytest运行规则

1:查找当前目录及其子目录下以test_*.py或*_test.py文件

2:找到文件后,在文件中找到以test开头函数并执行

所以在创建pytest文件时必须要以test开头或者结尾,函数要以test开头。

执行单个测试文件: pytest   test**.py(文件名称)

用例设计原则

文件名以test_*.py或*_test.py

测试类以Test开头,并且不能带init方法

以Test_开头的类

以test_开头的方法

所有的包pakege必须要有__init__.py文件

断言使用assert

运行.py模块里面的任一函数

pytest test_mod.py::test_func

运行.py模块里面,测试类里面的任一方法

pytest test_mod.py::TestClass::test_method

断言

assert XX         判断XX为真

assert not XX   判断XX不为真

assert a  in b   判断b包含a

assert a ==b   判断a等于b

assert a != b   判断a等于b

装饰器

表达式:    pytest -m slow

将运行用@pytest.mark.slow装饰器

import pytest

def add(x, y):
    return x+y

def test_add_1():
    assert add(1, 2) == 3

@pytest.mark.demo1
def test_add_2():
    assert add(1, 2) == 3

@pytest.mark.demo1
def test_add_3():
    assert add(1, 2) == 3

命令执行: pytest -m demo1 

 

 只会执行test_add_2 和 test_add_3 其它的不会执行

skip: 跳过一些用例不执行

@pytest.mark.skip(reason="skip")

 

import pytest

def add(x, y):
    return x+y

def test_add_1():
    assert add(1, 2) == 3

@pytest.mark.skip(reason="不执行")
def test_add_2():
    assert add(1, 2) == 3

def test_add_3():
    assert add(1, 2) == 3

 skipif: 特殊情况下跳过该测试用例

import pytest
import sys
def add(x, y):
    return x+y

def test_add_1():
    assert add(1, 2) == 3

@pytest.mark.skipif(sys.version_info < (3, 8), reason="require python3.8")
def test_add_2():
    assert add(1, 2) == 3

def test_add_3():
    assert add(1, 2) == 3

对较大的测试套件,通常最好有一个文件来定义标记,然后一致适用于整个测试套件

import pytest
import sys

minversion = pytest.mark.skipif(sys.version_info < (3, 8), reason="require python3.8")

共享之前需要先导入minversion

from test_module import minversion

pytest.skip(reason=" ")函数

pytest.skipi()放到函数里面,只跳过该函数

import pytest

def add(x, y):
    return x+y

def test_add_1():
    pytest.skip("not support")
    assert add(1, 2) == 3

def test_add_2():
    assert add(1, 2) == 3

def test_add_3():
    assert add(1, 2) == 3

pytest.skip()放到函数外边,跳过整个文件

import pytest
def add(x, y): return x+y 
pytest.skip("not support")def test_add_1():
    assert add(1, 2) == 3

def test_add_2():
    assert add(1, 2) == 3

def test_add_3():
    assert add(1, 2) == 3

 

posted @ 2020-08-30 13:14  Yi_warmth  阅读(362)  评论(0编辑  收藏  举报
CSDN博客地址