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 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…