Следуя документации здесь , я пытаюсь добавить тесты в мой flask проект с pytest.
Это мой код:
import os
import tempfile
import pytest
import myapp
from flask import Flask, render_template, redirect, request, flash, g, url_for, session, abort
@pytest.fixture
def client():
db_fd, myapp.app.config['DATABASE'] = tempfile.mkstemp()
myapp.app.config['TESTING'] = True
with myapp.app.test_client() as client:
with myapp.app.app_context():
myapp.init_db()
yield client
os.close(db_fd)
os.unlink(myapp.app.config['DATABASE'])
def login(client, username, password, redirect_to):
return client.post('/login', data={
'username': username,
'password': password,
'redirect-to': redirect_to},
follow_redirects=True)
def logout(client):
return client.get('/logout', follow_redirects=True)
def test_empty_db(client):
rv = client.get('/')
assert b'MyApp Name' in rv.data
def test_dashboard_logged_out(client):
rv = client.get('/dashboard')
assert b'Login to continue' in rv.data
def test_login_logout(client):
rv = login(client,
myapp.app.config['USERNAME'],
myapp.app.config['PASSWORD'],
'/dashboard')
assert rv.status_code == 200
rv = logout(client)
assert b'logged out' in rv.data
Проблема: (ОШИБКА при разрыве test_login_logout)
Хотя все тесты выполнены успешно, я вижу ошибку - PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\Claudia\\AppData\\Local\\Temp\\tmpxftp9tno'
при выполнении строки os.unlink(myapp.app.config['DATABASE'])
.
У меня нет другого процесса, использующего базу данных. Я проверил все, и единственный процесс python, который запускается во время теста, - это командная строка (с повышением прав администратора), выполняющая pytest
.