应付Django 1.3.1 Unit test的一个Bug

12 篇文章 0 订阅
在使用Python 2.7、Django 1.3.1和PostgreSQL 2.4.4时,作者遇到单元测试抛出'psycopg2.programmingerror autocommit cannot be used inside a transaction'错误。该问题因Django 1.3.1与psycopg2 2.4.2以上版本不兼容引起。解决方案包括升级Django到1.4或降级psycopg2到2.4.1。在Windows和Ubuntu上已验证方法有效。
摘要由CSDN通过智能技术生成

应付Django 1.3.1  Unit test的一个Bug


资源版本信息:

Python:2.7

Django:1.3.1

DB:Postgresql

pycopg2:2.4.4


OK,如果你是使用和我一样的配置,恭喜你,你会得到和我一样的单元测试问题


作者:Wally Yu

CSDN:http://blog.csdn.net/quicktest

微博:http://www.weibo.com/quicktest


问题描述:

运行单元测试:

python manage.py test

得到报错信息:

psycopg2.programmingerror autocommit cannot be used inside a transaction


网上查了一下,是因为Django1.3.1对pscopg2的2.4.2及以上版本不兼容


解决办法(本人在windowsXP和Ubuntu11上均实践通过):

方法一:

升级Django至最新版本 1.4


方法二:

降级psycopg2到2.4.1版本:

  • Windows:下载对应的安装包,地址:http://www.stickpeople.com/projects/python/win-psycopg/index.2.4.1.html
  • Linux:运行如下命令:
sudo apt-get update
sudo apt-get install python-setuptools python-pip build-essential python-dev libpq-dev
sudo pip install psycopg2==2.4.1

至此,再次运行
python manage.py test


可以得到可爱的unit test 结果:

Windows:

D:\Projects\CloudTesting>python manage.py test
Creating test database for alias 'default'...
................................................................................
................................................................................
................................................................................
................................................................................
......
----------------------------------------------------------------------
Ran 326 tests in 17.266s

OK
Destroying test database for alias 'default'...

Linux:
root@SHA-Essqa-Linux:~/project/CloudTesting# python manage.py test
Creating test database for alias 'default'...
......................................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 326 tests in 20.123s

OK
Destroying test database for alias 'default'...

大功告成!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值