我正在尝试使用pytest模块进行测试驱动开发.pytest我写的时候pytest不会到控制台print.
我用print它来运行它...
在pytest my_tests.py似乎是说,它应该是默认的工作:http://pytest.org/latest/capture.html
但:
import myapplication as tum
class TestBlogger:
@classmethod
def setup_class(self):
self.user = "alice"
self.b = tum.Blogger(self.user)
print "This should be printed, but it won't be!"
def test_inherit(self):
assert issubclass(tum.Blogger, tum.Site)
links = self.b.get_links(posts)
print len(links) # This won't print either.
Run Code Online (Sandbox Code Playgroud)
什么都没有打印到我的标准输出控制台(只是正常的进度和多少次测试通过/失败).
我正在测试的脚本包含print:
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
Run Code Online (Sandbox Code Playgroud)
在documentation模块中,默认情况下会打印所有内容,这正是我需要的.但是,我希望unittest出于其他原因使用.它似乎是这样的基本功能,也许我很想念它!?
有谁知道如何显示打印语句?
我想对我的类进行单元测试,该类位于另一个名为的文件中client_blogger.py.
我的单元测试文件位于同一目录中.除了我试图模仿我自己的方法之外,我的所有其他单元测试都有效.
## unit_test_client_blogger.py
import mock
import json
from client_blogger import BloggerClient, requests
Class TestProperties():
@pytest.fixture
def blog(self):
return BloggerClient(api_key='123', url='http://example.com')
@mock.patch('client_blogger._jload')
@mock.patch('client_blogger._send_request')
def test_gets_blog_info(self, mock_send, mock_jload):
""" Get valid blog info from API response. """
valid_blog_info = 'some valid json api response here'
parsed_response = json.loads(valid_blog_info)
correct_blog_id = '7488272653173849119'
mock_jload.return_value = valid_blog_info
id = self.blog().get_blog_info(parsed_response)
assert id == correct_blog_id
Run Code Online (Sandbox Code Playgroud)
这是client_blogger.py文件内容:
# client_blogger.py
import requests, json
class BloggerClient(object):
""" Client interface for Blogger API. """
def __init__(self, key, …Run Code Online (Sandbox Code Playgroud) 我自己开始学习编程(C)作为一种爱好.我正在使用K&R.
main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
Run Code Online (Sandbox Code Playgroud)
验证getchar()!= EOF是0还是1
我想我明白发生了什么:
但是,我的解决方案是错误的,所以显然我不明白:
main ()
{
int c;
while ((c = getchar()) != EOF)
printf("%d\n", c);
}
Run Code Online (Sandbox Code Playgroud)
这只是打印字符的值.如果按回车键,也会打印"10".
我以为它会打印c.但是,它是打印字符的值而不是1或0值.
我知道在将其与EOF进行比较后,c被赋予1或0.但我不确定我可以使用什么逻辑来表明这一点.看来我需要以某种方式"退出"显示字符值,而是显示比较值.这是否意味着我需要离开while循环?如果是这样,我不知道如何(这只是猜测).
我怎样才能简单地验证c = 1还是0?
而且,我怎么知道这个?我想,必须有一些基本的东西,我应该从中学习.
main ()
{
int c;
while ((c = getchar()) != EOF != 0 != 1)
putchar(c);
}
Run Code Online (Sandbox Code Playgroud)
我也这样做了,我认为这似乎有效.因为它不输出任何字符,但我不确定这是否是他们正在寻找的解决方案......
我是编程新手.
我想知道rand()究竟是什么.
仅搜索会生成有关其用法的示例.但没有人解释函数如何生成随机数的每一步.他们将rand()视为黑盒子.
我想知道rand()正在做什么; 每一步.
是否有资源可以让我看到rand()的确切含义? 这是所有开源的东西不是吗?如果没有消息来源,我会解决这个问题.
我知道它会返回一个随机数,但它是如何生成该数字的?我想看看每一步.
谢谢.
我restrict_xpaths为我的scrapy蜘蛛添加了规则,现在它立即失败了:
2015-03-16 15:46:53+0000 [tsr] ERROR: Spider error processing <GET http://www.thestudentroom.co.uk/forumdisplay.php?f=143>
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/base.py", line 800, in runUntilCurrent
call.func(*call.args, **call.kw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/task.py", line 602, in _tick
taskObj._oneWorkUnit()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/task.py", line 479, in _oneWorkUnit
result = self._iterator.next()
File "/Library/Python/2.7/site-packages/scrapy/utils/defer.py", line 57, in <genexpr>
work = (callable(elem, *args, **named) for elem in iterable)
--- <exception caught here> ---
File "/Library/Python/2.7/site-packages/scrapy/utils/defer.py", line 96, in iter_errback
yield next(it)
File "/Library/Python/2.7/site-packages/scrapy/contrib/spidermiddleware/offsite.py", line 26, in process_spider_output
for x in result:
File …Run Code Online (Sandbox Code Playgroud) 抱歉这个无知的问题,但我对x86感到困惑.
EDX与DX的寄存器基本相同吗?我知道EDX是32位而DX是16位.
如果我将0x1移动到EDX,那么0x1也会在DX中?
为什么 - 或者为什么不 - 在Python OOP中专门使用getter和setter是一种好习惯?
我的教科书陈述如下:
import random
class Die(object):
"""Simulate a generic die."""
def __init__(self):
self.sides = 6
self.roll()
def roll(self):
"""Updates the die with a random roll."""
self.value = 1+random.randrange(self.sides)
return self.value
def getValue(self):
"""Return the last value set by roll()."""
return self.value
def main():
d1,d2 = Die(),Die()
for n in range(12):
print d1.roll(),d2.roll()
main()
Run Code Online (Sandbox Code Playgroud)
getValue()方法(称为getter或accessor)返回值实例变量的值.为什么要写这种功能?为什么不简单地使用实例变量?我们将在本章末尾的常见问题解答中解决这个问题.
但是,本章末尾没有FAQ,因此从未解释为什么在Python OOP中使用getter.
我曾尝试阅读其他地方,但我在任何地方都找不到好的解释.关于SO的大多数答案都是关于Java的,我读过它与Python无关 ......
有人可以帮助我理解为什么使用它们是好的做法?如果没有,为什么不呢?
我是编程新手.我最近读过:
您的程序应该具有封装在函数或类方法中的几乎所有功能
这使得我似乎不应该同时拥有这两个函数和方法.我还读到方法应该简短.
好吧,我最近制作了一个从博客下载图像的小程序.我使用了类和OOP方法,因为我需要继承某些东西.
但是,因为方法应该简短并做一件事,我的程序不能做太多.我的问题是,如果我试图使用纯OOP方法,怎么可能避免编写函数?
我的脚本基本遵循以下模式:
class Tumblr(object):
def __init__(self, user):
self.user = user
def get_posts(self):
"""Use tumblr api to return a user's posts."""
return client['blog']['posts']
def parse_images(self):
"""Returns images."""
images = []
for post in posts:
if 'image' in post:
images.append(post['image'])
return images
def parse_videos(self):
"""Returns videos."""
def main():
# this is a function, and thus not OOP?
Run Code Online (Sandbox Code Playgroud)
我还有其他类用于不同的网站API,还有一个Downloader类,它实际上将文件下载到磁盘和正确的目录.问题是,现在我所有的都是这些孤立的类和方法.
我想创建一个main也可以使用其他功能的函数,但是我再次认为这不是正确的OOP.
如何在不编写函数的情况下实际完成工作?(我读过的教科书说,如果我使用方法,不应该在纯OOP中使用函数.)
我正在尝试使用带有 pytest 的 Mock 模块进行单元测试。
我想os.path.isdir()返回False,而os.mkdir()不是运行;我只想验证传递给它的参数是否正确。
我想你只需要看set_path方法
我的应用程序:
import pytumblr, os, sys, prowlpy, json, collections
from urllib2 import urlopen
from time import sleep
from apiclient.discovery import build
class Site(object):
"""A generic site."""
def __init__(self, user):
self.user = user
def set_path(self):
if os.path.isdir(self.user_dir): # if user dir already exists
print "**Directory already exists: ", self.user_dir
else:
os.mkdir(self.user_dir) # else create user dir
print "Created Directory: ", self.user_dir
class Tumblr(Site):
"""A tumblr blog."""
type = "tumblr" …Run Code Online (Sandbox Code Playgroud) 我想解决一个难题.但我根本不知道它需要什么样的代码.问题是指数问题.
描述:
玩家一次走/跑一步.有时会做出决定; 这是一个是/否的问题.一旦问题得到解答,玩家继续行走直到达到下一个决定/问题.继续此操作,直到覆盖总距离.

问题是我希望看到每条可能的路径(很多python列表,如['y','y','n','y','n']).这是我到目前为止编写的代码:(播放器在一个Player()类中,我删除了它,因为它在这里不重要.)
class Solver(object):
""" Solver object. """
def __init__(self, field):
self.field = field
self.dinc = 113
self.distance = 128
def take_step(self, player):
""" Takes a step and records players route. """
# Adds 0 if there is no decision to be made on this step
# Adds 1 if there is a decision to be made on this step
player.run(self.dinc)
if self._is_decision_time(player):
player.route.append((player.step_id, 1))
else:
player.route.append((player.step_id, 0))
def next_decision(self, player):
""" Accepts a player …Run Code Online (Sandbox Code Playgroud)