Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
796 views
in Technique[技术] by (71.8m points)

python - getting "TypeError: __init__() takes 1 positional argument but 10 were given"

I am trying to run a unittest to see if my database table is saving information as it should. However, I continuously get this error,

u1 = User("test", "user", "testuser123", "[email protected]", "password", None, "California", None, None)
TypeError: __init__() takes 1 positional argument but 10 were given"

I find it odd because I am submitting all the data that my model class requires. Here is my code:

Models.py file

class User (db.Model):
    """User in the system"""

    __tablename__ = "users" 

    id = db.Column( 
        db.Integer, 
        primary_key=True    
    )   
    firstname = db.Column(  
        db.Text,    
        nullable=False  
    )   
    lastname = db.Column(   
        db.Text,    
        nullable=False  
    )   
    username = db.Column(   
        db.Text,    
        nullable=False, 
        unique=True 
    )   
    email = db.Column(  
        db.Text,    
        nullable=False, 
        unique=True 
    )   
    password = db.Column(   
        db.Text,    
        nullable=False  
    )   
    image = db.Column(  
        db.Text 
    )   
    state = db.Column(  
        db.Text,    
        nullable=False  
    )   
    vax_date = db.Column(   
        db.Text,
        nullable=True  
    )   
    covid_status = db.Column(   
        db.Text,
        nullable=True
    )   

    review = db.relationship('Review', backref='users')

Here is my unittest

class UserModelTestCase(TestCase):
    """Test case for User Model"""

    def setUp(self):
        """Create test client, add sample data."""

        db.drop_all()
        db.create_all()

        u1 = User("test", "user", "testuser123", "[email protected]", "password", None, "California", None, None)
        uid1 = 1111
        u1.id = uid1
        
        db.session.commit()

        u1 = User.query.get(uid1)

        self.u1 = u1
        self.uid1 = uid1

        self.client = app.test_client()

    def tearDown(self):
        res = super().tearDown()
        db.session.rollback()
        return res

    def test_user_model(self):
        """Does basic model work?"""

        u = User(
            firstname='test',
            lastname='case',
            username="testuser",
            email="[email protected]",
            password="HASHED_PASSWORD",
            image=None,
            state="Arizona"
        )

        db.session.add(u)
        db.session.commit()

        # User should have no messages & no followers
        self.assertEqual(u.firstname, 'test')
question from:https://stackoverflow.com/questions/65891528/getting-typeerror-init-takes-1-positional-argument-but-10-were-given

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...