- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
class CanonDatabase:
def __init__(self, clean_up_db=False):
self.db = "tmg_canon_april_tokens"
self.conn = create_connection(self.db)
self.cur = self.conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
我正在尝试 mock.patch MySQLdb 以传递构造函数。
@mock.patch.object(MySQLdb, '__init__')
class TestDatabase(unittest.TestCase):
def setUp(self):
super(TestDatabase, self).setUp()
patch = mock.patch('atone_canon.Database.create_connection')
mock_baz = patch.start()
mock_baz.cursor.return_value = mock.MagicMock()
def tearDown(self):
super(TestDatabase, self).tearDown()
mock.patch.stopall()
def test_clean_table(self, mysql_mock):
db = CanonDatabase()
self.assertEqual(True, False)
但是失败并显示以下错误消息:
File "atone_canon/Database.py", line 20, in __init__ self.cur = self.conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
AttributeError: 'module' object has no attribute 'cursors'
我找到了一个方法:
如果我在我的单元测试中插入这个导入,甚至没有(!)使用它:
from MySQLdb.cursors import DictCursor
然后我就不会再收到错误了,我什至不必模拟 MySQLdb 包装器的补丁:
# @mock.patch.object(MySQLdb, '__init__')
class TestDatabase(unittest.TestCase):
...
对解决方案不太满意。通常,我很难模拟项目之外的类(例如,生活在 virtualenv 中)。我把这个留着,希望有人能告诉我如何模拟这些类。
最佳答案
首先:确保您有Database.py
import MySQLdb.cursors
否则,即使您不修补任何内容,也会出现您提到的错误。如果你想仔细检查它添加 cur=MySQLdb.cursors.DictCursor
在 __init__
的顶部并删除所有补丁:您会发现新行中出现了相同的错误。如果您加载 MySQLdb.cursors
,该错误将消失在尝试指向 MySQLdb.cursors.DictCursor
之前在你的上下文中的某个地方.如果您想知道之前没有看到该错误是因为在您的生产代码中您导入了 MySQLdb.cursors
使用前CanonDatabase()
现在做一个测试,你的构造函数将通过和 create_connection
邪恶 功能不要尝试连接任何东西都可以通过修补 create_connection
获得以及其他:
class TestSimpler(unittest.TestCase):
@mock.patch('atone_canon.Database.create_connection')
def test_base(self, mock_create_connection):
db = CanonDatabase()
self.assertIsNotNone(db)
当然你可以装饰测试类如果你想要补丁create_connection
对于每一种测试方法。
关于python - 如何模拟.patch MySQLdb.cursors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28345645/
我已经尝试了很多方法来解决这个问题,但我没有解决。我在 google 和 stackoverflow 上搜索了很多,没有适合我的选项。请帮我。提前致谢。我正在使用 django 1.10,python
我正在尝试启动一个 Django 项目。 我在尝试运行 manage.py 时遇到此错误: (venv)dyn-160-39-161-214:proj Bren$ python manage.py T
我正在尝试启动一个 Django 项目。 我在尝试运行 manage.py 时遇到此错误: (venv)dyn-160-39-161-214:proj Bren$ python manage.py T
所以我在我的 Linux 上安装了 Mysql。之后,我使用命令 sudo apt-get install python-mysqldb 安装了 mysqldb。然后,当我尝试在 python 中导入
我正在尝试通过 Python 的 MySQLdb 库将数据从 Pandas(从 CSV 导入)传递到 MySQL 数据库。当文字反斜杠发挥作用时,我遇到了麻烦。我从原始输入中转义了单个反斜杠,因此 P
我在 Win7 上使用 Django 1.4.1 和 Active Python 2.7。我已经使用 pypm install mysql-python 安装了 MySQL 模块。 数据库引擎是dja
我正在开发一个 Google App Engine 项目,在尝试使用 MySQL 设置基本 Django 管理站点时遇到了问题。我已经搜索过这个问题,但我看到的都是人们发布有关在本地运行应用程序的交易
我是 Python 的新手,正在尝试设置 Django 项目以使用 MySql。我已经通读了文档以及有关该主题的其他一些 StackOverflow 帖子,但我仍然无法让它发挥作用。 当我尝试在 Dj
username@servername 11 月 2 日星期二 22:08:28 ~/public_html/IDM_app $ sudo aptitude install mysql-server
我创建了一个使用 MySQL 数据库的 Django 项目。我在 mysql 安装工具中有 mysql-python 连接器。我不确定我是否在环境变量中设置了必需的路径。当我运行服务器时,它引发错误:
我无法连接 mysql,也无法对其执行“python manage.py syncdb” 如何在django和django-cms中连接mysql不报错? 最佳答案 用django连接mysql su
我在尝试连接到 mysql 数据库时遇到的问题。我还给出了我使用的数据库设置。 Traceback (most recent call last): File "manage.py", line
我知道这个错误发生在很多人身上,我尝试了不同的解决方案,但都没有奏效。 我正在使用 aws eb cli。 我正在使用以下命令 eb deploy将我的应用程序部署到服务器。 以下是我的 Django
所以我安装了 Bitnami Django 堆栈,希望能像所宣称的“可立即运行”版本的 python 和 mysql 一样。但是,我无法让 python 同步数据库:“加载 MySQLdb 模块时出错
这将是我一生中第二次发布几乎完全相同的事情。这次和上次相差了大约9个月,学习过程非常困难,而且在过去的9个月里我从来没有遇到过这个问题,并且在整个时间段内经常完美地使用MySQLdb。我认识到类似的问
win10python3.7.3安装了mysqlclient1.4.2 当我导入 mysqlclient 时,运行代码时收到错误消息。当我安装mysqlclient时,我将'mysqlclient-1
我正在 EC2 Amazon-Linux 实例上设置我的网站,它使用一些 Python。 经过大量调整后,我在设置 Python 时遇到了很大的麻烦。特别是下面的代码会抛出错误: >>> impor
我正在阅读有关事务如何在 python 的 MySQLdb 中工作的信息。在 this tutorial ,它说: In Python DB API, we do not call the BEGIN
我一直在尝试使用 pip install flask-mysqldb 安装 flask-mysqldb,但每次我尝试它都会给我一个错误提示: error: command 'C:\Program Fi
我想在重复输入时退出程序,这是我所做的没有成功的事情: 我想处理该错误,但不知道如何并且尚未找到有关它的信息。 def connection(): global servername, use
我是一名优秀的程序员,十分优秀!