首页 > 解决方案 > 如何在其他目录文件中使用 __init__.py 函数

问题描述

我有这个目录结构:

FlaskBox
    FlaskSample
        static
            style.css
        templates
            1.html and others
        __init__.py
        loginModel.py
    test
        login_test.py

__init__.py中的代码

from flask import Flask, render_template, url_for, redirect, flash, abort, session, request, jsonify
from random import randint
from FlaskSample.loginModel import Login


app = Flask(__name__)
app.config['SECRET_KEY'] = 'you-will-never-guess'

@app.route('/login', methods=['GET', 'POST'])
def login():
    try:
        form = Login()
        if form.validate_on_submit():
            if form.userName.data == 'Admin' and form.password.data == 'Admin':
                print(form.userName.data)
                session.clear()
                session['Username'] = form.userName.data
                return redirect(url_for('getMember', name=form.userName.data))
            else:
                print('error')
                flash("Please Provide proper username and password")

        return render_template('Login.html', title='Sign In', form=form)
    except Exception:
        abort(404)
        raise

我想为登录编写测试用例,在测试目录中我有一个文件 login_test.py 包含以下内容:

import os
import tempfile
import pytest
from FlaskSample import loginModel


@pytest.fixture
def client(request):
    client = app.test_client()
    return client


def login(client, username, password):
    """Helper function to login"""
    return client.post('/login', data={
        'username': username,
        'password': password
    }, follow_redirects=True)


def test_login_logout(client):
    rv = login(client, 'user1', 'wrongpassword')
    assert b'Invalid password' in rv.data

但是当我使用 pytest 运行它时,我给了我错误,例如: ImportError: No module named 'FlaskSample'

谁能建议我有什么问题?以及如何使用来自两个不同目录的函数

这是我的错误堆栈:

这是我的错误堆栈

标签: pythonpython-3.xflaskpytestpython-unittest

解决方案


推荐阅读