相关疑难解决方法(0)

如何在Python中找到绑定方法的实例?

>>> class A(object):  
...         def some(self):  
...                 pass  
...  
>>> a=A()  
>>> a.some  
<bound method A.some of <__main__.A object at 0x7f0d6fb9c090>>
Run Code Online (Sandbox Code Playgroud)

IOW,我需要在仅仅移交"a.some"后才能访问"a".

python methods class

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

如何让PyCharm显示来自pytest的整个错误差异?

我正在使用Pycharm来运行我的pytest单元测试.我正在测试REST API,所以我经常需要验证JSON块.当测试失败时,我会看到这样的事情:

FAILED
test_document_api.py:0 (test_create_documents)
{'items': [{'i...ages': 1, ...} != {'items': [{'...ages': 1, ...}

Expected :{'items': [{'...ages': 1, ...}
Actual   :{'items': [{'i...ages': 1, ...}
 <Click to see difference>
Run Code Online (Sandbox Code Playgroud)

当我点击"点击查看差异"链接时,大部分差异将转换为省略点,就像这样

Pycharm比较差异省略

这没用,因为它没有告诉我什么是不同的.对于大于单个字符串或数字的任何差异,我会得到此行为.

我假设Pycharm和/或pytest试图消除大输出差异的无信息部分.然而,它在这里过于咄咄逼人并且一切都在消失.

我如何让Pycharm和/或pytest向我展示完整的区别?

我已经尝试添加-vvv到pytest的附加参数,但这没有任何效果.


从原始帖子开始,我验证了当我从命令行运行单元测试时,我看到了相同的行为.所以这是pytest而不是Pycharm的问题.

看了我到目前为止得到的答案,我猜我真正问的是"在pytest中是否可以在maxDiff=None不改变测试源代码的情况下进行设置?" 我从阅读有关pytest的印象是,-vv开关是控制此设置的,但似乎并非如此.

python pytest pycharm difference

22
推荐指数
1
解决办法
1586
查看次数

当单元测试失败多线字符串时,PyCharm显示完全差异?

我正在使用"unittest"框架编写一些Python单元测试,并在PyCharm中运行它们.一些测试将长生成的字符串与从文件读取的参考值进行比较.如果这个比较失败,我希望看到两个比较字符串的差异使用PyCharms差异查看器.

所以代码是这样的:

    actual = open("actual.csv").read()
    expected = pkg_resources.resource_string('my_package', 'expected.csv').decode('utf8')
    self.assertMultiLineEqual(actual, expected)
Run Code Online (Sandbox Code Playgroud)

并且PyCharm很好地将测试识别为失败,并在结果窗口中提供一个链接以单击打开diff查看器.但是,由于unittest如何缩短结果,我在diff查看器中得到了这样的结果:

左边:

'时间[57个字符] ercent 0; 1; 1; 1; 1; 1; 1; 1 0; 2; 1; 3; 4; 2; 3; 1 0; 3; [110 chars] 32'

右边:

'time [57 chars] ercen 0; 1; 1; 1; 1; 1; 1; 1 0; 2; 1; 3; 4; 2; 3; 1 0; 3; 2 [109 chars] 32'

现在,我想摆脱所有[X字符]部分,只看到整个文件和PyCharm完全可视化的实际差异.

我试图查看unittest代码,但找不到配置选项来打印完整的结果.有一些变量,如maxDiff和_diffThreshold,但它们对此打印没有影响.

此外,我试图在py.test中运行它,但在PyCharm中的支持甚至更少(甚至没有链接到失败的测试).

是否有一些技巧使用difflib与unittest或者其他一些Python测试框架的其他技巧来做到这一点?

python unit-testing pycharm

9
推荐指数
2
解决办法
2610
查看次数

如何在Django单元测试中输出完整的差异?

当我assertEqual()在REPL中使用两个字典时,会显示一个差异,例如:

>>> import unittest
>>> class A(unittest.TestCase):
...   pass
... 
>>> a = A()
>>> d1 = dict(zip(range(10), range(1000000, 1000010)))
>>> d2 = dict(zip(range(3, 13), range(1000003, 1000013)))
>>> a.assertEqual(d1, d2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.5/unittest/case.py", line 820, in assertEqual
    assertion_func(first, second, msg=msg)
  File "/usr/lib/python3.5/unittest/case.py", line 1111, in assertDictEqual
    self.fail(self._formatMessage(msg, standardMsg))
  File "/usr/lib/python3.5/unittest/case.py", line 665, in fail
    raise self.failureException(msg)
AssertionError: {0: 1000000, 1: 1000001, 2: 1000002, 3: 10[73 chars]0009} != {3: …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing python-unittest

4
推荐指数
1
解决办法
632
查看次数