django test模块
2014-01-02 15:20
218 查看
今天试了试django自带的test模块,断点执行到一下代码中时发现一点儿小问题:
有问题的代码在于,confirm根本无法从dos输入获得‘yes’,因为输入后,会将换行符'\r'也读进去。因此,无论输入yes 还是cancel,都会走到线面的else分支,
def _create_test_db(self, verbosity, autoclobber): """ Internal implementation - creates the test db tables. """ suffix = self.sql_table_creation_suffix() test_database_name = self._get_test_db_name() qn = self.connection.ops.quote_name # Create the test database and connect to it. We need to autocommit # if the database supports it because PostgreSQL doesn't allow # CREATE/DROP DATABASE statements within transactions. cursor = self.connection.cursor() self._prepare_for_test_db_ddl() try: cursor.execute( "CREATE DATABASE %s %s" % (qn(test_database_name), suffix)) except Exception as e: sys.stderr.write( "Got an error creating the test database: %s\n" % e) if not autoclobber: confirm = input( "Type 'yes' if you would like to try deleting the test " "database '%s', or 'no' to cancel: " % test_database_name) if autoclobber or confirm == 'yes': try: if verbosity >= 1: print("Destroying old test database '%s'..." % self.connection.alias) cursor.execute( "DROP DATABASE %s" % qn(test_database_name)) cursor.execute( "CREATE DATABASE %s %s" % (qn(test_database_name), suffix)) except Exception as e: sys.stderr.write( "Got an error recreating the test database: %s\n" % e) sys.exit(2) else: print("Tests cancelled.") sys.exit(1) return test_database_name
有问题的代码在于,confirm根本无法从dos输入获得‘yes’,因为输入后,会将换行符'\r'也读进去。因此,无论输入yes 还是cancel,都会走到线面的else分支,
print("Tests cancelled.") sys.exit(1)![]()
改掉代码后,正确执行,销毁旧的database,新建了test database。
相关文章推荐
- Django的模块
- Django基本模块
- Python unittest 模块
- Django 中使用 logging 模块记录系统日志
- Django 缓存模块 page_cache 源码阅读
- 深入学习Django源码基础12 - 简要分析Django中template模块2
- Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接(二)
- PYTHON单元测试模块unittest
- Django模块笔记【二】
- Django中定制自己的User和Group管理模块(类似对admin的二次开发)
- python中django模块的使用
- Django功能模块的单独使用
- django内建的模块标签和过滤器
- unittest模块
- django views test
- Django-oauth2模块安装配置及使用client_credentials和password方式认证
- django表单模块学习
- 第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块
- 在 unittest 中使用 logging 模块记录测试数据
- django2源码安装xadmin过程中遇到模块缺少,如No module named 'crispy_forms'等问题解决办法