2016-09-13 14 views
0

私はコンテキストブロックでSQLを実行するときに渡されたデータベースを使用するはずのpeeweeのtest_databaseを使用してモデルをテストしようとしています。しかし、テストを実行している間、私は生産データベースが常に使用されていることに気付きました。 Peewee:test_database()は指定されたデータベースを使用していません

====================================================================== 
ERROR: test_Admin (__main__.DatabaseTestSuite) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "db/db_test.py", line 14, in test_Admin 
    with test_database(test_db, (Admin), create_tables=True): 
    File "/usr/local/lib/python2.7/dist-packages/playhouse/test_utils.py", line 21, in __enter__ 
    for m in self.models: 
    File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 4723, in __iter__ 
    return iter(self.select()) 
    File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3149, in __iter__ 
    return iter(self.execute()) 
    File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3142, in execute 
    self._qr = ResultWrapper(model_class, self._execute(), query_meta) 
    File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2826, in _execute 
    return self.database.execute_sql(sql, params, self.require_commit) 
    File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3683, in execute_sql 
    self.commit() 
    File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3507, in __exit__ 
    reraise(new_type, new_type(*exc_args), traceback) 
    File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3676, in execute_sql 
    cursor.execute(sql, params or()) 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute 
    result = self._query(query) 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query 
    conn.query(q) 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in query 
    self._affected_rows = self._read_query_result(unbuffered=unbuffered) 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in _read_query_result 
    result.read() 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in read 
    first_packet = self.connection._read_packet() 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in _read_packet 
    packet.check_error() 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error 
    err.raise_mysql_exception(self._data) 
    File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception 
    raise errorclass(errno, errval) 
ProgrammingError: (1146, u"Table 'db.admin' doesn't exist") 

---------------------------------------------------------------------- 

はここでテストコードです:

は、ここで私が得る例外だ

from db import * 
import unittest 
from playhouse.test_utils import test_database 


test_db = MySQLDatabase('testdb', 
    user='testuser', 
    password='testpass') 


class DatabaseTestSuite(unittest.TestCase): 

    def test_Admin(self): 
     with test_database(test_db, (Admin), create_tables=True): 

      Admin.create(username="testuser", 
       email="[email protected]") 

      result = Admin.select().where(Admin.user == "testuser") 

      unittest.assertIsNotNone(result) 


if __name__ == '__main__': 
    unittest.main() 

私はgithubのページの問題を開設しましたが、今のところ何の助けを受けていません。問題hereが見つかります。必要に応じて追加情報を提供する必要があります。どんな助けでも感謝します、ありがとう。

答えて

0

モデルタプルには1つの項目があるため、末尾にカンマが必要です。この

with test_database(test_db, (Admin,), create_tables=True): 

にこの

with test_database(test_db, (Admin), create_tables=True): 

を変更すると、それを解決しました。

関連する問題