Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调试单元测试_Python_Django_Unit Testing_Debugging - Fatal编程技术网

Python 调试单元测试

Python 调试单元测试,python,django,unit-testing,debugging,Python,Django,Unit Testing,Debugging,我在Django中调试unittest的代码时遇到一些问题。 当我运行unittest时,我有输出 FAIL: test_basket (api.api_1_0.tests.basket_tests.BasketTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/dasm/apps/filmaste

我在Django中调试unittest的代码时遇到一些问题。
当我运行unittest时,我有输出

FAIL: test_basket (api.api_1_0.tests.basket_tests.BasketTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/dasm/apps/filmaster/reloaded/film20/api/api_1_0/tests/basket_tests.py", line 13, in test_basket
    self.assertEquals(status, 200)
AssertionError: 400 != 200
但当我的同事进行同样的测试时,他得到了

2011-06-10 14:58:33,221 - WARNING:notification.models - No module named APNSWrapper - @<module>/96
/home/michuk/djcode/filmaster-reloaded/piston/handler.py:36: UserWarning: Handler already registered for model ChannelScreenings, you may experience inconsistent results.
  "you may experience inconsistent results." % new_cls.model.__name__)
2011-06-10 14:58:33,844 - ERROR:film20.api.api_1_0.handlers - extra() got an unexpected keyword argument 'join' - @error_handler/93
Traceback (most recent call last):
  File "/home/michuk/djcode/filmaster-reloaded/piston/resource.py", line 164, in __call__
    result = meth(request, *args, **kwargs)
  File "/home/michuk/djcode/filmaster-reloaded/film20/api/api_1_0/handlers.py", line 161, in wrapper
    return view(self, request, request.username, *args, **kw)
  File "/home/michuk/djcode/filmaster-reloaded/film20/api/api_1_0/handlers.py", line 1051, in read
    return paginated_collection(request, BasketItem.objects.user_items(username, type).select_related('user', 'film'))
  File "/home/michuk/djcode/filmaster-reloaded/film20/filmbasket/models.py", line 67, in user_items
    join=['LEFT OUTER JOIN "core_recommendation" ON ("filmbasket_basketitem"."film_id" = "core_recommendation"."film_id" and "filmbasket_basketitem"."user_id" = "core_recommendation"."user_id")'],
TypeError: extra() got an unexpected keyword argument 'join'

Failure
Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/django/utils/unittest/case.py", line 339, in run
    testMethod()
  File "/home/michuk/djcode/filmaster-reloaded/film20/api/api_1_0/tests/basket_tests.py", line 15, in test_basket
    self.assertEquals(status, 200)
  File "/usr/local/lib/python2.6/dist-packages/django/utils/unittest/case.py", line 520, in assertEqual
    assertion_func(first, second, msg=msg)
  File "/usr/local/lib/python2.6/dist-packages/django/utils/unittest/case.py", line 513, in _baseAssertEqual
    raise self.failureException(msg)
AssertionError: 400 != 200
2011-06-10 14:58:33221-警告:notification.models-没有名为apnswraper的模块-@/96
/home/michuk/djcode/filmaster-reload/活塞/handler.py:36:UserWarning:handler已注册模型频道筛选,您可能会遇到不一致的结果。
“您可能会遇到不一致的结果。”%new\u cls.model.\uuuu name\uuuuuu)
2011-06-10 14:58:33844-错误:film20.api.api_1_0.handlers-extra()获取了意外的关键字参数“join”-@ERROR_handler/93
回溯(最近一次呼叫最后一次):
文件“/home/michuk/djcode/filmaster-reload/活塞/resource.py”,第164行,在调用中__
结果=meth(请求,*args,**kwargs)
文件“/home/michuk/djcode/filmaster-reload/film20/api/api_1_0/handlers.py”,第161行,在包装器中
返回视图(self、request、request.username、*args、**kw)
文件“/home/michuk/djcode/filmaster重载/film20/api/api_1_0/handlers.py”,第1051行,已读
返回分页的_集合(请求,BasketItem.objects.user_项(用户名,类型)。选择与_相关的('user','film'))
文件“/home/michuk/djcode/filmaster-reload/film20/filmbasket/models.py”,第67行,在用户项中
join=[“filmbasket\u basketitem.”“film\u id”=“core\u recommendation.”“film\u id”和“filmbasket\u basketitem.”“user\u id”=“core\u recommendation.”“user\u id”=“user\u id”)上的左外join“core\u recommendation”,
TypeError:extra()获得意外的关键字参数“join”
失败
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python2.6/dist-packages/django/utils/unittest/case.py”,第339行,正在运行
testMethod()
文件“/home/michuk/djcode/filmaster重新加载/film20/api/api\u 1\u 0/tests/basket\u tests.py”,第15行,在测试篮中
self.assertEquals(状态,200)
文件“/usr/local/lib/python2.6/dist-packages/django/utils/unittest/case.py”,第520行,在assertEqual中
断言函数(第一,第二,msg=msg)
文件“/usr/local/lib/python2.6/dist-packages/django/utils/unittest/case.py”,第513行,在baseAssertEqual中
引发自我失败异常(msg)
断言错误:400!=200
正如您所看到的,第二个stacktrace比我使用的那个更有效。我可以更改设置(或安装一些东西)以展开stacktrace吗

编辑:
操作系统:Ubuntu 11.04
Python:2.7.1

pdb安装了

我不完全确定他得到的信息比你多。这可能仅仅是因为他缺少一些模块或设置中的某些内容,导致更多的东西失败


你所看到的正是你应该看到的。这是一个失败,所以从技术上讲,它不是unittest中的一个bug,而是正在测试的代码中的一个bug。传统的方法是编写测试,看着它失败,然后编写特性,看着它通过。如果您发现自己正在调试测试,那么这种情况就违背了练习的要点。

我已经修复了第一个警告,因此我们的stacktrace在这一部分中有所不同,但其余代码完全相同。我们正在从Django1.1(带有JoinHack)迁移到Django1.3,所以unittest告诉我,有些地方出了问题。第二个stacktrace显示unittest失败的确切位置:
文件/home/michuk/djcode/filmaster-reload/film20/filmbasket/models.py”,第67行TypeError:extra()得到一个意外的关键字参数“join”
当第一次仅显示信息时,该测试失败。我希望有完整的回溯,因为搜索损坏的元素会容易得多。