我正在努力实现什么目标。
我正在 Django 项目中测试 REST API。我想创建具有相关测试函数的测试类(以下每个测试函数都依赖于前一个测试函数) - 第一次失败意味着全部失败。在第一个测试函数中,我使用“post”请求创建了一个对象。在下一个测试用例中,我想使用“get”请求检查该对象是否确实存在。
它是如何工作的
看起来 Django-pytest 在每次测试后都会清除数据库中的所有记录。
pytest文档中提到:https://pytest-django.readthedocs.io/en/latest/helpers.html#pytest-mark-django-db-request-database-access
有什么办法可以改变这个吗?
我的代码:
我的conftest.py
:
import pytest
@pytest.fixture(scope='session')
def django_db_setup():
from django.conf import settings
settings.DATABASES['default'] = {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'db_name.sqlite3',
}
@pytest.fixture
def object_data():
return {"some keys": "some values"}
@pytest.fixture
def object_name():
return "some name"
Run Code Online (Sandbox Code Playgroud)
我的tests.py
:
import pytest
from rest_framework.test import APIClient
from rest_framework import status
@pytest.mark.django_db
class TestAPI:
def setup(self):
self.client = APIClient()
def test_create_object(self, object_data, object_name):
post_response = self.client.post("/api/object/", data=object_data, format="json") …
Run Code Online (Sandbox Code Playgroud) 我尝试使用以下命令在控制台中更新 PIP(Windows 10,Python 3.7.1):
python37 -m pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)
这是我每次尝试更新时遇到的错误:
>Exception:
Traceback (most recent call last):
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\basecommand.py", line 215, in main
status = self.run(options, args)
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\commands\install.py", line 342, in run
prefix=options.prefix_path,
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\req\req_set.py", line 784, in install
**kwargs
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\req\req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\req\req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\wheel.py", line 462, in move_wheel_files
generated.extend(maker.make(spec))
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\_vendor\distlib\scripts.py", line 372, in make
self._make_script(entry, filenames, options=options)
File "C:\Users\5gyblo\AppData\Roaming\Python\Python37\site-packages\pip\_vendor\distlib\scripts.py", line 276, in _make_script
self._write_script(scriptnames, …
Run Code Online (Sandbox Code Playgroud)