Skip to content

Commit 5927860

Browse files
committed
Improve coverage ratio.
1 parent 322ccc4 commit 5927860

File tree

2 files changed

+158
-6
lines changed

2 files changed

+158
-6
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name='mybatis',
5-
version='0.0.16',
5+
version='0.0.17',
66
description='A python ORM like mybatis.',
77
long_description=open('README.md').read(),
88
long_description_content_type='text/markdown', # 如果你使用的是Markdown格式的README

test/test_db_rollback.py

Lines changed: 157 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
@pytest.fixture(scope="function")
9-
def db_connection():
9+
def mysql_db_connection():
1010
# 配置数据库连接
1111
connection = ConnectionFactory.get_connection(
1212
dbms_name="mysql",
@@ -36,8 +36,67 @@ def db_connection():
3636
# 清理数据和关闭连接
3737
connection.close()
3838

39-
def test_db_rollback_error_table(db_connection):
40-
mb = Mybatis(db_connection, "mapper")
39+
@pytest.fixture(scope="function")
40+
def postgresql_db_connection():
41+
# 配置数据库连接
42+
connection = ConnectionFactory.get_connection(
43+
dbms_name="mysql",
44+
host="localhost",
45+
user="mybatis",
46+
password="mybatis",
47+
database="mybatis"
48+
)
49+
connection.start_transaction()
50+
cursor = connection.cursor()
51+
cursor.execute("DROP TABLE IF EXISTS fruits")
52+
create_table_sql = '''CREATE TABLE IF NOT EXISTS fruits (
53+
id SERIAL PRIMARY KEY,
54+
name VARCHAR(100),
55+
category VARCHAR(100),
56+
price int)
57+
'''
58+
# 在测试开始前准备数据
59+
cursor.execute(create_table_sql)
60+
cursor.execute("INSERT INTO fruits (name, category, price) VALUES ('Alice', 'A', 100)")
61+
cursor.execute("INSERT INTO fruits (name, category, price) VALUES ('Bob', 'B', 200)")
62+
connection.commit()
63+
64+
# 提供数据库连接给测试用例
65+
yield connection
66+
67+
# 清理数据和关闭连接
68+
connection.close()
69+
70+
@pytest.fixture(scope="function")
71+
def sqlite3_db_connection():
72+
# 配置数据库连接
73+
connection = ConnectionFactory.get_connection(
74+
dbms_name="sqlite3",
75+
db_path="./test.db"
76+
)
77+
connection.start_transaction()
78+
cursor = connection.cursor()
79+
cursor.execute("DROP TABLE IF EXISTS fruits")
80+
create_table_sql = '''CREATE TABLE IF NOT EXISTS fruits (
81+
id INTEGER PRIMARY KEY AUTOINCREMENT,
82+
name VARCHAR,
83+
category VARCHAR,
84+
price INTEGER)
85+
'''
86+
# 在测试开始前准备数据
87+
cursor.execute(create_table_sql)
88+
cursor.execute("INSERT INTO fruits (name, category, price) VALUES ('Alice', 'A', 100)")
89+
cursor.execute("INSERT INTO fruits (name, category, price) VALUES ('Bob', 'B', 200)")
90+
connection.commit()
91+
92+
# 提供数据库连接给测试用例
93+
yield connection
94+
95+
# 清理数据和关闭连接
96+
connection.close()
97+
98+
def test_db_rollback_error_table(mysql_db_connection):
99+
mb = Mybatis(mysql_db_connection, "mapper")
41100
@mb.Insert("INSERT INTO fruits2 (name, category, price) VALUES ('Candy', 'B', 500)")
42101
def insert():
43102
pass
@@ -65,8 +124,8 @@ def update():
65124
except mybatis.errors.DatabaseError as err:
66125
assert True
67126

68-
def test_db_rollback_error_table2(db_connection):
69-
mb = Mybatis(db_connection, "mapper")
127+
def test_db_rollback_error_table2(mysql_db_connection):
128+
mb = Mybatis(mysql_db_connection, "mapper")
70129
try:
71130
mb.insert("testDBRollbackInsert", {})
72131
except mybatis.errors.DatabaseError as err:
@@ -77,6 +136,99 @@ def test_db_rollback_error_table2(db_connection):
77136
except mybatis.errors.DatabaseError as err:
78137
assert True
79138

139+
try:
140+
mb.update("testDBRollbackUpdate", {})
141+
except mybatis.errors.DatabaseError as err:
142+
assert True
143+
144+
145+
def test_postgresql_db_rollback_error_table(postgresql_db_connection):
146+
mb = Mybatis(postgresql_db_connection, "mapper")
147+
@mb.Insert("INSERT INTO fruits2 (name, category, price) VALUES ('Candy', 'B', 500)", primary_key="id")
148+
def insert():
149+
pass
150+
151+
try:
152+
insert()
153+
except mybatis.errors.DatabaseError as err:
154+
assert True
155+
156+
@mb.Delete("DELETE FROM fruits2 WHERE id=1")
157+
def delete():
158+
pass
159+
160+
try:
161+
delete()
162+
except mybatis.errors.DatabaseError as err:
163+
assert True
164+
165+
@mb.Delete("UPDATE fruits2 SET name='Candy' WHERE id=1")
166+
def update():
167+
pass
168+
169+
try:
170+
update()
171+
except mybatis.errors.DatabaseError as err:
172+
assert True
173+
174+
def test_postgresql_db_rollback_error_table2(postgresql_db_connection):
175+
mb = Mybatis(postgresql_db_connection, "mapper")
176+
try:
177+
mb.insert("testDBRollbackInsert", {}, primary_key="id")
178+
except mybatis.errors.DatabaseError as err:
179+
assert True
180+
181+
try:
182+
mb.delete("testDBRollbackDelete", {})
183+
except mybatis.errors.DatabaseError as err:
184+
assert True
185+
186+
try:
187+
mb.update("testDBRollbackUpdate", {})
188+
except mybatis.errors.DatabaseError as err:
189+
assert True
190+
191+
def test_sqlite3_db_rollback_error_table(sqlite3_db_connection):
192+
mb = Mybatis(sqlite3_db_connection, "mapper")
193+
@mb.Insert("INSERT INTO fruits2 (name, category, price) VALUES ('Candy', 'B', 500)", primary_key="id")
194+
def insert():
195+
pass
196+
197+
try:
198+
insert()
199+
except mybatis.errors.DatabaseError as err:
200+
assert True
201+
202+
@mb.Delete("DELETE FROM fruits2 WHERE id=1")
203+
def delete():
204+
pass
205+
206+
try:
207+
delete()
208+
except mybatis.errors.DatabaseError as err:
209+
assert True
210+
211+
@mb.Delete("UPDATE fruits2 SET name='Candy' WHERE id=1")
212+
def update():
213+
pass
214+
215+
try:
216+
update()
217+
except mybatis.errors.DatabaseError as err:
218+
assert True
219+
220+
def test_sqlite3_db_rollback_error_table2(sqlite3_db_connection):
221+
mb = Mybatis(sqlite3_db_connection, "mapper")
222+
try:
223+
mb.insert("testDBRollbackInsert", {}, primary_key="id")
224+
except mybatis.errors.DatabaseError as err:
225+
assert True
226+
227+
try:
228+
mb.delete("testDBRollbackDelete", {})
229+
except mybatis.errors.DatabaseError as err:
230+
assert True
231+
80232
try:
81233
mb.update("testDBRollbackUpdate", {})
82234
except mybatis.errors.DatabaseError as err:

0 commit comments

Comments
 (0)