pytest使用
程序员文章站
2024-02-27 14:15:51
...
安装
pip install pytest
验证版本
pytest --version
使用
def f(a):
return a + 1
def tests_f():
# 断言
assert func(1) == 2
执行
-
执行shell命令
pytest
django 使用
安装
pip install pytest-django
使用
-
在Django项目的根目录,也就是和
manage.py
同一级,创建配置文件pytest.ini
。[pytest] DJANGO_SETTINGS_MODULE=settings.local python_files=pytest_*.py python_paths=app filterwarnings = ignore::Warning
-
DJANGO_SETTINGS_MODULE
:根据自己项目实际配置文件填充。 -
python_files
:所有以pytest_开头的文件,在单独运行pytest之时都会被执行。 -
python_paths
:此项配置python路径,若app在当前目录,可忽略,若app均在指定的目录之下,这里指定app文件目录。 -
filterwarnings
:配置忽略的预警级别。 -
测试代码
import json import mock import pytest from django.test import Client @pytest.mark.django_db @pytest.fixture(scope='function') def create_user(): user = User.objects.create(name="测试姓名") @pytest.mark.django_db def test_user_api(): response = Client().get(path='/user', data=json.dumps(data), HTTP_AUTHORIZATION="token 123456") content = response.json() assert content['name'] == "测试姓名"
-
@pytest.mark.django_db
:启用数据库的访问。 -
@pytest.fixture(scope='function')
:fixture
修饰器来标记固定的一个函数,其他函数和模块之类的方法调用被修饰器标记的函数时会被**并优先执行,通常会被用于完成预置处理和重复操作。例如上面test_user_api
方法执行之前会自动调用加了fixture
修饰器的create_user()
方法。
fixture修饰器
-
修饰器使用方式:
@pytest.fixture(scope='session')
-
fixture
中的scope
参数用来控制fixture
的作用范围:session > module > class > function
。-
function
:每一个函数或方法都会调用。 -
class
:每一个类调用一次,一个类可以有多个方法。 -
module
:每一个.py
文件调用一次。 -
session
:整个会话调用一次。
-
上一篇: pytest基本操作
下一篇: python获取指定时间差的时间实例详解