我是Python和Django的新手,我正在通过创建一个饮食管理网站来学习,但我已经完全失败了让我的单元测试运行.我发现的所有文档和博客都说,只要它可以从tests.py中找到,tests.py与models.py在同一个文件夹中,并且你的测试类是子类TestCase,它应该全部自动获取.这对我manage.py test <myapp>不起作用,当我运行它时没有找到任何测试.
我从他们自己的软件包开始我的所有测试,但已将其简化为仅在我的tests.py文件中的所有测试.当前的tests.py看起来像:
import unittest
from pyDietTracker.models import Weight
from pyDietTracker.weight.DisplayDataAdapters import DisplayWeight
class TestDisplayWeight(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def testGetWeightInStone_KG_Correctly_Converted(self):
weight = Weight()
weight.weight = 99.8
testAdapter = DisplayWeight(weight)
self.assertEquals(testAdapter.GetWeightInStone(), '15 st 10 lb')
Run Code Online (Sandbox Code Playgroud)
我已经通过继承Django TestCase类来尝试它,但这也没有用.我正在使用Django 1.1.1,Python 2.6并且我正在运行Snow Leopard.
我确定我遗漏了一些非常基本和明显的东西,但我无法解决问题.有任何想法吗?
编辑:评论后只需快速更新
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'pyDietTracker',
)
Run Code Online (Sandbox Code Playgroud)
为了让测试运行,我正在运行 manage.py test pyDietTracker
所有我想要的是bool(myInstance)返回False(并且myInstance在条件中评估为False,如if /或/和.我知道如何覆盖>,<,=)
我试过这个:
class test:
def __bool__(self):
return False
myInst = test()
print bool(myInst) #prints "True"
print myInst.__bool__() #prints "False"
Run Code Online (Sandbox Code Playgroud)
有什么建议?
(我使用的是Python 2.6)
我正在讨论C运营商的关联性话题.
在那里我遇到了这个事实,函数调用操作符()具有从左到右的关联性.但是,当表达式中出现相同优先级的多个运算符时,关联性才会发挥作用.但我找不到涉及函数调用运算符的任何示例,其中关联性起着至关重要的作用.
例如,在语句中a = f(x) + g(x);,结果取决于评估顺序,而不取决于两个函数调用的关联性.类似地,调用f(g(x))将g()首先评估函数,然后是函数f().这里我们有一个嵌套的函数调用,并且再次关联不起任何作用.
此优先级组中的其他C运算符是数组下标[],postfix ++和postfix --.但我找不到任何涉及这些运算符组合的例子,()其中关联性在表达式评估中起作用.
所以我的问题是函数调用的关联性是否从左到右定义影响C中的任何表达式?任何人都可以提供一个示例,其中函数调用运算符的关联性()在表达式求值中是否重要?
从Django 1.8开始,该makemigrations命令可以--name, -n 选择为创建的迁移文件指定自定义名称.
我想知道在旧版本的Django中使用自动生成的名称创建迁移文件是否安全,然后手动重命名该文件.它似乎按预期工作.有潜在的风险吗?
在我的Django应用程序中,我使用了FileSystemStorage生成的文件.我像这样初始化它:
import os
from urlparse import urljoin
from django.conf import settings
from django.core.files.storage import FileSystemStorage
gen_files_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'generated/'), base_url=urljoin(settings.MEDIA_URL, 'generated/'))
Run Code Online (Sandbox Code Playgroud)
当我想创建一个新文件时,我使用:
from django.core.files.base import ContentFile
from django.db import models
def next_number():
# num = ...
return num
gen_file = models.FileField(storage=gen_files_storage)
gen_file.save('file%s.txt' % next_number(), ContentFile(''))
Run Code Online (Sandbox Code Playgroud)
这很好.唯一的问题是FileSystemStorageDjango迁移中的路径是"硬编码".因为我使用不同的设置进行开发(更改)和生产,所以manage.py makemigrations命令通常只会因为路径发生变化而生成迁移,尽管数据库中的所有内容都保持不变.
我知道有一个使用子类的解决方案FileSystemStorage(参见下面的答案),但有更好的解决方案吗?
Poetry 有一个非常好的版本解算器,有时太好了:) 我试图在一个使用两个不兼容的包的项目中使用 Poetry。然而,它们仅通过声明是不兼容的,因为其中之一不再开发,但除此之外它们可以很好地协同工作。
使用 pip,我可以在一个环境中安装它们(打印错误)并且它可以工作。Poetry 将声明无法解析依赖项版本并拒绝安装任何内容。
有没有办法强制诗歌安装这些不兼容的依赖项?谢谢你!
我需要从服务器发送的HTTP响应中获取cookie并将其放入下一个请求的标头中.我该怎么做?
提前致谢.
在记录类的所有文档字符串(单行或多行)之前和之后插入一个空行 - 一般来说,类的方法通过一个空行彼此分开,并且docstring需要从第一种方法是一个空白行; 为了对称,在类头和docstring之间加一个空行.
但我似乎无法找到任何实际实现此功能的代码.
我已经检查了Python 2.6提供的几个标准模块,甚至专门搜索了提到Guido名称的模块.但即使是rietveld代码审查工具的代码也不符合恕我直言(例如http://code.google.com/p/rietveld/source/browse/upload.py):
class CondensedHelpFormatter(optparse.IndentedHelpFormatter):
"""Frees more horizontal space by removing indentation from group
options and collapsing arguments between short and long, e.g.
'-o ARG, --opt=ARG' to -o --opt ARG"""
def format_heading(self, heading):
return "%s:\n" % heading
Run Code Online (Sandbox Code Playgroud)
此多行文档字符串之前没有空白行,后面的空白行位于结束引号之外.
此类/usr/lib64/python2.6/site.py之前没有空行,但在结束引号之前和之后有一个空行.
class _Helper(object):
"""Define the built-in 'help'.
This is a wrapper around pydoc.help (with a twist).
"""
def __repr__(self):
Run Code Online (Sandbox Code Playgroud)
是否有可用于演示PEP 257的示例?
提前致谢
是否可以分离其中一个终端窗格(拆分窗口,而不是标签)terminator并将其移动到新窗口?我知道有一个解决方法(请参阅下面的答案),但我正在寻找一个更好的(更加用户友好的)解决方案.
为了在 Vim 中用插件编写 C++,Clang_complete。
安装后出现这个错误:
Error detected while processing function <SNR>14_ClangCompleteInit..<SNR>14_initClangCompletePython:
clang_complete: No python support available.
Cannot use clang library
Compile vim with python support to use libclang
Run Code Online (Sandbox Code Playgroud)
但是我的 vim 支持 python 和 python3。+python/dyn +python3/dyn
然后我检查我的python解释器:
:echo has('python') # output is 0
:echo has('python3') # output is 1
Run Code Online (Sandbox Code Playgroud)
所以,我认为原因是我的vim默认动态加载python3解释器。
我可以更改 python 解释器吗?或者设置python的默认动态加载版本?
python ×7
django ×3
autocomplete ×1
boolean ×1
c ×1
c++ ×1
casting ×1
class ×1
coding-style ×1
cookies ×1
http-headers ×1
linux ×1
plugins ×1
python-2.x ×1
terminal ×1
terminator ×1
unit-testing ×1
vim ×1