我遇到了一些单元测试.
这是我能想到的最简单的例子:
#testito.py
import unittest
class Prueba(unittest.TestCase):
def setUp(self):
pass
def printsTrue(self):
self.assertTrue(True)
if __name__=="__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
问题是,运行它没有效果:
$ python testito.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
我正在挠头,因为我没有看到上面的代码有任何问题.它现在发生了几次测试,我真的不知道接下来该做什么.任何的想法?
我正在使用optparse模块创建一个shell脚本,jut是为了好玩,所以我想打印一个漂亮的ascii绘图来代替描述.
原来这个代码:
parser = optparse.OptionParser(
prog='./spill.py',
description=u'''
/ \
vvvvvvv /|__/|
I /O,O |
I /_____ | /|/|
J|/^ ^ ^ \ | /00 | _//|
|^ ^ ^ ^ |W| |/^^\ | /oo |
\m___m__|_| \m_m_| \mm_|
''',
epilog='''
Las cucarachas lograron con exito su plan, echando a los pestilentes sangre caliente de sus cajas de cemento.
Ahora el hombre es una especie errante en el espacio, un vagabundo errante en las estrellas.''')
Run Code Online (Sandbox Code Playgroud)
渲染如下:
$ ./bin/spill.py -h
Usage: ./spill.py …Run Code Online (Sandbox Code Playgroud) 我的包有一个在其setup.py中定义的入口点:
# -*- coding: utf-8 -*-
from setuptools import setup
setup(
name='fbuildbot',
version='0.1',
...
entry_points={
'console_scripts': [
'create = create:main',
],
},
install_requires=[
"cookiecutter",
],
)
Run Code Online (Sandbox Code Playgroud)
事情是,如果我这样做python setup.py develop,我可以正常运行命令,但如果我安装它,python setup.py install安装过程正确运行但控制台脚本失败ImportError:
Traceback (most recent call last):
File "/home/matias/.venvs/fbuild/bin/create", line 8, in <module>
load_entry_point('fbuildbot==0.1', 'console_scripts', 'create')()
File "/home/matias/.venvs/fbuild/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 318, in load_entry_point
File "/home/matias/.venvs/fbuild/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2221, in load_entry_point
File "/home/matias/.venvs/fbuild/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 1954, in load
ImportError: No module named create
Run Code Online (Sandbox Code Playgroud)
显然,它无法在pythonpath上正确设置包.我以为是因为我的剧本几乎没有达到顶级水平.所以我尝试在包中添加包装,将所有重要部分移动到内部模块并相应地更改setup.py:
# -*- …Run Code Online (Sandbox Code Playgroud) 我正在为周末开始的项目留下小胡子.
我正在使用PHP实现.我有一些问题,因为我不习惯这个系统.
你如何处理模板继承或重用?我知道偏僻,但我应该如何使用它们?我正在做这样的事情,包括:
top.mustache:
<!DOCTYPE html>
<html lang='es'>
<head>
<meta charset=utf-8" />
<link rel="stylesheet" href="/media/style.css" type="text/css" media="screen" />
</head>
<body>
<header><h1><a href="/">Top</a></h1>
</header>
<section>
Run Code Online (Sandbox Code Playgroud)
bottom.mustache:
</section>
<footer><a href="http://potajecreativo.com/">potaje</a></footer>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
以及呈现此模板的视图:
{{>top}}
<form action="/album/" method="post">
<p><label for="name">Name</label> <input type="text" name="name" value=""/></p>
<p><label for="description">Description</label> <textarea name="description" rows="8" cols="40"></textarea></p>
<p><input type="submit" value="Save" /></p>
</form>
{{>bottom }}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
我需要在我的网站上添加计划和定价架构,向用户收取使用某些功能的费用.在这种情况下,User增加了Notices对Points.
A User不应该添加Notices超过他的' Plan允许.类似的东西.
一个快速的谷歌回合没有给我任何东西环顾四周(django定价和计划是可怕的搜索条款)所以我正在考虑推出自己的解决方案,但可能你知道一些有趣的东西.
我对定价模式的工作方式或如何处理定价的方式并不十分理解,但这不在问题的范围内.
我的模型后处理是使用post_save信号:
from django.core.signals import request_finished
from django.dispatch import receiver
from models import MyModel
from pipeline import this_takes_forever
@receiver(post_save, sender=MyModel)
def my_callback(sender, **kwargs):
this_takes_forever(sender)
Run Code Online (Sandbox Code Playgroud)
该this_takes_forever程序确实IO,所以我想推迟,以避免阻塞的要求太多了.
我认为这是新的asyncio模块的一个很好的用例.但是我很难在整个过程中思考.
我想我应该能够像这样调整信号接收器:
@receiver(post_save, sender=MyModel)
def my_callback(sender, **kwargs):
loop = asyncio.get_event_loop()
loop.run_until_complete(this_takes_forever(sender))
loop.close()
Run Code Online (Sandbox Code Playgroud)
提供this_takes_forever的还适用于协程.
@coroutine
def this_takes_forever(instance):
# do something with instance
return instance
Run Code Online (Sandbox Code Playgroud)
这听起来太神奇了.事实上它停止了AssertionError:
AssertionError at /new/
There is no current event loop in thread 'Thread-1'.
Run Code Online (Sandbox Code Playgroud)
我不知道在这种情况下我应该在哪里开始循环.有人试过这样的事吗?
说我MethodView看起来像这样:
from flask import jsonify, request, redirect, flash, views, url_for
from models import Provider
class ProviderAPI(views.MethodView):
def get(self, provider_id):
if provider_id is not None:
provs = [Provider.objects.get_by_id(provider_id)]
else:
provs = Provider.objects.all()
return jsonify(dict(objects=[x.attributes_dict for x in provs]))
def post(self):
data = request.form.to_dict()
data['index'] = request.form.getlist('index')
if data:
obj = Provider(**data)
if obj.is_valid():
obj.save()
flash('%s created' % obj, )
return redirect(url_for(
'provider',
provider_id=obj.id,
)
)
else:
return jsonify(obj.errors)
def put(self, provider_id):
pass
def delete(self, provider_id):
pass
Run Code Online (Sandbox Code Playgroud)
这已在此已知代码段中注册:
def register_api(view, …Run Code Online (Sandbox Code Playgroud) 我正在做一系列基准测试,并找到了httpperf工具.
但我的ubuntu 12.04中的版本文件描述符大小太小.因为它通过以下消息警告我:
- httperf:警告:打开文件限制> FD_SETSIZE; 限制最大 打开FD_SETSIZE文件的数量
以前在http://gom-jabbar.org/articles/2009/02/04/httperf-and-file-descriptors中编写了更大的httperf编译指南,但该网站现在已关闭.
有谁知道用适当的设置编译工具的步骤?
在我正在工作的项目中,我需要使用Behave来覆盖Tornado服务,所以我想在运行每个场景之前启动龙卷风服务的实例.
天真地尝试将循环作为一部分运行之前似乎锁定了执行:
from tornado import ioloop
from tornadoadapter.applications import APPLICATION
def before_all(context):
print "Service running on port 8000"
APPLICATION.listen(8000)
ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
所以它可能不是我需要的.
python ×6
django ×2
ascii-art ×1
bdd ×1
benchmarking ×1
depth ×1
dictionary ×1
entry-point ×1
flask ×1
httperf ×1
mustache ×1
optparse ×1
php ×1
quota ×1
redirect ×1
setuptools ×1
signals ×1
templates ×1
tornado ×1
ubuntu-12.04 ×1
unit-testing ×1