zoukankan      html  css  js  c++  java
  • django test模块

    今天试了试django自带的test模块,断点执行到一下代码中时发现一点儿小问题:

     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
    " % 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
    " % e)
                        sys.exit(2)
                else:
                    print("Tests cancelled.")
                    sys.exit(1)
    
            return test_database_name

    有问题的代码在于,confirm根本无法从dos输入获得‘yes’,因为输入后,会将换行符' '也读进去。因此,无论输入yes 还是cancel,都会走到线面的else分支,

    print("Tests cancelled.")
    sys.exit(1)





    改掉代码后,正确执行,销毁旧的database,新建了test database。

  • 相关阅读:
    关于iterator的一点疑惑
    shuffle()方法
    List简单使用笔记
    Arrays.asList()
    多项式ADT(数组存储多项式系数和指数)笔记
    《数据结构与算法分析C语言描述》源码网盘分享
    C语言实现链表
    typedef的用法
    #ifndef的用法
    mysql创建数据库和数据表模板
  • 原文地址:https://www.cnblogs.com/xiami303/p/3501956.html
Copyright © 2011-2022 走看看