我为flask应用程序创建了功能测试。当我在本地环境中输入pytest
时,所有测试都工作并通过。当我尝试使用github工作流启动测试时,相同的测试失败。quizproject中的一个模块找不到。我不知道为什么会发生这种情况。我尝试调试它,但没有结果。由于以下错误,CI失败:
Run pytest
ImportError while loading conftest '/home/runner/work/quiz-roads/quiz-roads/tests/conftest.py'.
tests/conftest.py:10: in <module>
from quizproject.models.users import User as NewUser
E ModuleNotFoundError: No module named 'quizproject.models.users'
Error: Process completed with exit code 4.
我的项目结构”
x一个一个一个一个x一个一个二个x
类,但出现以下错误-confest.py
import datetime
import pytest
from sqlalchemy import delete
# import the module
from quizproject import create_app
from quizproject import db as _db
from quizproject.models.users import User as NewUser
from config import TestingConfig
from werkzeug.security import generate_password_hash
...
需要加载的类
import datetime
from importlib.metadata import MetadataPathFinder
from flask_login import UserMixin
from .. import db
metadata = MetadataPathFinder()
class User(UserMixin, db.Model):
__tablename__ = "users",
metadata,
user_id = db.Column(db.Integer, primary_key=True)
register_time = db.Column(
db.DateTime, default=datetime.datetime.utcnow(), nullable=False)
last_login = db.Column(
db.DateTime, default=datetime.datetime.utcnow(), nullable=False)
user_email = db.Column(db.String(100), unique=True, nullable=False)
user_password = db.Column(db.String(100), nullable=False)
user_name = db.Column(db.String(1000), unique=True, nullable=False)
def get_id(self):
return (self.user_id)
可以找到完整的ci代码here
我尝试将tests
文件夹移动到quizproject
文件夹,但得到相同的错误。
1条答案
按热度按时间fykwrbwg1#
经过几个小时的调试这个问题,我找到了问题的原因。很简单...
我将模块名从大写(
Users.py
)改为小写(users.py
)。Git没有得到更改。我在远程仓库上有不同的字母,在本地仓库上有不同的文件字母。因此“github action”失败,一切都在本地环境中工作。我还去了git documemtation并使用了
core.ignoreCase
内部变量。这使得各种变通方法能够使Git在不区分大小写的文件系统上更好地工作,如FAT,NTFS等。我改变了这个设置临时只为这一个仓库的命令。
git config core.ignorecase false
www.example.com的文件颜色user.py更改为绿色(默认情况下,本地存储库中的新文件)。
我删除并再次添加文件到存储库(users.py)。我提交了文件(users.py)。我不得不从远程存储库删除大写的文件(Users.py)。
它解决了这个问题。