所以,假设我有以下内容:
import unittest
class MyTests(unittest.TestCase):
def test001(self):
print 'This is test001'
def test002(self):
print 'This is test002'
if __name__ == '__main__':
unittest.main()
print 'Done'
Run Code Online (Sandbox Code Playgroud)
输出是:
>> This is test001
>> This is test002
>> ----------------------------------------------------------------------
>> Ran 2 tests in 0.001s
>> OK
Run Code Online (Sandbox Code Playgroud)
我想知道为什么不打印"完成"(或任何后来的东西)?
请帮我理解内置的os.path.join()函数是如何工作的.例如:
import os
print os.path.join('cat','dog') # 'cat/dog' no surprise here
print os.path.join('cat','dog').join('fish') # 'fcat/dogicat/dogscat/dogh'
Run Code Online (Sandbox Code Playgroud)
在Mac上(我猜Linux也是)os.name是posixpath的别名.所以查看posixpath.py模块,join()函数如下所示:
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded. An empty last part will result in a path that
ends with a separator."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == '' or path.endswith('/'):
path += b
else:
path += …Run Code Online (Sandbox Code Playgroud) 当使用unittestpython 3中的库时,我只想在测试失败时做一些操作(但这应该在类级别,所以我不必为每个测试编写它).例如,当使用表现时,有类似的东西:
def after_step(context, step):
if step.status == "failed":
...
Run Code Online (Sandbox Code Playgroud)
是否有类似的unittest库,如果没有,最简单的方法是做类似的事情?
我正在考虑使用factory_boy库进行API测试.文档中的一个例子是:
class UserFactory(factory.Factory):
class Meta:
model = base.User
first_name = "John"
last_name = "Doe"
Run Code Online (Sandbox Code Playgroud)
对于这项工作,我们需要的first_name,last_name等被作为参数传递__init__()的方法base.User() class.但是,如果您有许多参数,则会导致以下情况:
class User(object):
GENDER_MALE = 'mr'
GENDER_FEMALE = 'ms'
def __init__(self, title=None, first_name=None, last_name=None, is_guest=None,
company_name=None, mobile=None, landline=None, email=None, password=None,
fax=None, wants_sms_notification=None, wants_email_notification=None,
wants_newsletter=None, street_address=None):
self. title = title
self.first_name = first_name
self.last_name = last_name
self.company_name = company_name
self.mobile = mobile
self.landline = landline
self.email = email
self.password = password
self.fax = fax
self.is_guest = is_guest
self.wants_sms_notification …Run Code Online (Sandbox Code Playgroud) 我在EC2实例上的Ubuntu服务器14.04上设置了jenkins.我有一些硒测试,我用它behave作为测试运行器.
在Jenkins上我也安装了插件AnsiColor,希望我可以在jenkins控制台上获得颜色输出,但是除了Gherking语法之外,我得到了其他一切的颜色.Selenium错误,python调试,一切都有颜色...... 除了表现的输出.
现在的问题是,如果我在Mac或Ubuntu上运行测试而不是Jenkins用户,一切正常,颜色就在那里.
我真的没有任何代码可以发布,但我可以说我试图无效:
behave --color formatter/ansi_escapes.py#!/bin/bash到jenkins构建脚本以确保它不会被执行sh而不是bash如果这与我有任何关联,我正在使用python 3.4 virtualenv
除了实际的答案,任何有关如何调试这个的建议也是受欢迎的!谢谢
我知道在 SO 上有很多类似的问题,比如这个或这个,也许还有更多,但似乎没有一个适用于我的特定情况。我对subprocess.Popen()工作原理缺乏了解也无济于事。
我想要实现的是:启动一个子进程(一个命令行收音机播放器),它也向终端输出数据,也可以接收输入——等待一段时间——终止子进程——退出shell。我在 OSX 10.9 上运行 python 2.7
案例 1. 这将启动广播播放器(但仅限音频!),终止进程,退出。
import subprocess
import time
p = subprocess.Popen(['/bin/bash', '-c', 'mplayer http://173.239.76.147:8090'],
stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=False,
stderr=subprocess.STDOUT)
time.sleep(5)
p.kill()
Run Code Online (Sandbox Code Playgroud)
案例 2. 这将启动收音机播放器,输出诸如收音机名称、歌曲、比特率等信息并接受输入。它终止子进程,但它从不存在 shell,即使使用“Ctrl-C”,终端也无法使用。
p = subprocess.Popen(['/bin/bash', '-c', 'mplayer http://173.239.76.147:8090'],
shell=False)
time.sleep(5)
p.kill()
Run Code Online (Sandbox Code Playgroud)
关于如何做到这一点的任何想法?我什至在想,如果没有其他选择,是否有可能为子进程打开一个slave-shell(当然这也是我不知道的事情)。谢谢!
在我的根项目文件夹中,我使用以下命令为python 3.4创建了一个虚拟环境:
$ virtualenv -p /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 venv
$ source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
现在我想为这个项目安装一些带有pip的软件包,我这样做:
$ venv/bin/pip install html
Run Code Online (Sandbox Code Playgroud)
我得到以下错误(完全回溯,除了我已用'...'替换路径):
Collecting html
Using cached html-1.16.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 3, in <module>
File ".../venv/lib/python3.4/site-packages/setuptools/__init__.py", line 11, in <module>
from setuptools.extension import Extension
File ".../venv/lib/python3.4/site-packages/setuptools/extension.py", line …Run Code Online (Sandbox Code Playgroud) 标题是不言自明的,在将其标记为重复之前,请考虑我已经检查了这个答案,它对我不起作用,因为我什至不仅在sys.stdout写入文件时没有获得正确的格式。所以我有以下 xml ( test.xml ):
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www...">
<soap:Body>
<SubmitTransaction xmlns="http://www.">
<Authentication>
</Authentication>
<Transaction>
<DataFields>
</DataFields>
</Transaction>
</SubmitTransaction>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
以及以下代码:
from lxml import etree
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse("test.xml", parser)
def get_data_fields():
for node in tree.iter():
if 'DataFields' in node.tag:
return node
a = get_data_fields()
field = etree.Element('Field_1')
child_1 = etree.Element('FieldName')
child_2 = etree.Element('FieldValue')
child_3 = etree.Element('FieldIndex')
child_1.text = 'dateTime'
child_2.text = '2016-07-29T12:00:00'
child_3.text = '1'
for i in [child_1, child_2, child_3]: …Run Code Online (Sandbox Code Playgroud) 我希望有人可以帮助我从 Python 对 Excel 进行编组的跨进程调用。
我有一个通过 Python 启动的 Excel 会话,我知道它会在需要从单独的 Python 进程访问时启动并运行。我使用编组CoMarshalInterfaceInStream()和CoGetInterfaceAndReleaseStream()来自 pythoncom 模块的调用使一切正常工作,但我需要重复访问流(在我的情况下我只能设置一次),并且CoGetInterfaceAndReleaseStream()只允许一次访问接口。
我相信,我想实现是可以做到的是什么CreateStreamOnHGlobal(),CoMarshalInterface()而CoUnmarshalInterface()但我无法得到它的工作,几乎可以肯定,因为我不是在正确的参数传递。
我没有详细描述我的主要场景,而是设置了一个简单的示例程序,如下所示 - 显然这发生在同一过程中,但一次一个步骤!以下代码段工作正常:
import win32com.client
import pythoncom
excelApp = win32com.client.DispatchEx("Excel.Application")
marshalledExcelApp = pythoncom.CoMarshalInterThreadInterfaceInStream(pythoncom.IID_IDispatch, excelApp)
xlApp = win32com.client.Dispatch(
pythoncom.CoGetInterfaceAndReleaseStream(marshalledExcelApp, pythoncom.IID_IDispatch))
xlWb = xlApp.Workbooks.Add()
xlWs = xlWb.Worksheets.Add()
xlWs.Range("A1").Value = "AAA"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试以下操作时:
import win32com.client
import pythoncom
excelApp = win32com.client.DispatchEx("Excel.Application")
myStream = pythoncom.CreateStreamOnHGlobal()
pythoncom.CoMarshalInterface(myStream,
pythoncom.IID_IDispatch,
excelApp,
pythoncom.MSHCTX_LOCAL,
pythoncom.MSHLFLAGS_TABLESTRONG)
myUnmarshaledInterface = pythoncom.CoUnmarshalInterface(myStream, pythoncom.IID_IDispatch)
Run Code Online (Sandbox Code Playgroud)
调用时出现此错误(我认为与第三个参数有关)pythoncom.CoMarshalInterface():
"ValueError: argument …Run Code Online (Sandbox Code Playgroud) 鉴于此立交桥查询https://overpass-turbo.eu/s/Sle,它搜索博物馆和画廊,我如何引入一种新型标签来搜索同一位置,例如我还想搜索node["amenity"~"cafe|bar"]周围同一区域(周围500米lat: 500,53.866444)lon: 10.684738我尝试过的所有操作要么引发错误,要么返回不完整的结果。例如,以下内容有效,但仅返回 caf\xc3\xa9s 和酒吧,但不返回博物馆。
[out:json];\n node["tourism"~"museum|gallery"](around:500,53.866444, 10.684738);\n node["amenity"~"cafe|bar"](around:500,53.866444, 10.684738);\n out center;\nRun Code Online (Sandbox Code Playgroud)\n python ×9
unit-testing ×2
ansi ×1
bash ×1
built-in ×1
com ×1
excel ×1
factory-boy ×1
jenkins ×1
lxml ×1
macos ×1
marshalling ×1
overpass-api ×1
path ×1
pip ×1
pythoncom ×1
subprocess ×1
testing ×1
virtualenv ×1
xml ×1