小编sju*_*dǝʊ的帖子

Python unittest - 使用列表断言字典

在为我的课写一些测试时,我遇到了一个有趣的简单问题.我想assertDictEqual包含一些列表的两个字典.但是这个列表可能没有以相同的方式排序 - >导致测试失败

例:

def test_myobject_export_into_dictionary(self):
    obj = MyObject()
    resulting_dictionary = {
            'state': 2347,
            'neighbours': [1,2,3]
        }
    self.assertDictEqual(resulting_dictionary, obj.exportToDict())
Run Code Online (Sandbox Code Playgroud)

这有时会失败,具体取决于列表中元素的顺序

FAIL: test_myobject_export_into_dictionary
------------------------------------
-  'neighbours': [1,2,3],
+  'neighbours': [1,3,2],
Run Code Online (Sandbox Code Playgroud)

任何想法如何以简单的方式断言?

我想在比较之前使用set代替list或排序列表.

python dictionary unit-testing assert

11
推荐指数
1
解决办法
1万
查看次数

python pickler - 超出递归深度

我试图挑选我的细胞自动机类的实例,但是我得到了这个错误:

RuntimeError: maximum recursion depth exceeded while calling a Python object
Run Code Online (Sandbox Code Playgroud)

我的细胞自动机由细胞列表(以及其他一些东西)组成,其中每个细胞都有指向它的邻居的指针.在这个特定的CA中,有256个单元.现在,我知道pickler应该能够识别已经被腌制的物体.

来自docs:
*pickle模块跟踪它已经序列化的对象,以便稍后对同一对象的引用不会再次序列化.

所以我真的不知道,为什么我超过了最大递归深度.

我认为也许pickler会进行深度优先酸洗,因此它首先跟随指针,超过递归堆栈然后引发异常.我知道我可以扩展最大递归深度sys.setrecursionlimit(),但我不认为这个好的也不是可扩展的解决方案.

第一个问题:pickler深度优先酸洗?
第二个问题:任何想法如何防止这种异常?

python recursion pickle

6
推荐指数
1
解决办法
2797
查看次数

play20 ebean在postgresql上生成了sql throws语法错误

我正在尝试使用postgresql来运行我的play20应用程序,以便我可以使用并稍后部署到Heroku.我听了这个回答.

基本上,我连接到数据库(所以从本地应用程序连接到Heroku postgresql数据库工作),但我无法使用生成的1.sql进化初始化数据库.但是生成的sql没有工作,因为postgresql正在使用模式(它应该在没有模式的情况下工作,但显然我做错了或者数据库做错了什么).

create table user (
id                        bigint not null,
email                     varchar(255),
gender                    varchar(1),
constraint pk_user primary key (id));
Run Code Online (Sandbox Code Playgroud)

结果

ERROR: syntax error at or near "user"
  Position: 14 [ERROR:0, SQLSTATE:42601]
Run Code Online (Sandbox Code Playgroud)

我通过向表名添加模式来修复它

create table public.user(
  ...
);
Run Code Online (Sandbox Code Playgroud)

好的,一切正常,直到我尝试读取或写入数据库.我再次获得sql语法异常,无法使用数据库.似乎sql查询有点错误.

有什么建议可能有问题吗?

sql heroku playframework-2.0

5
推荐指数
1
解决办法
1016
查看次数