pytest确实很棒,assert introspection因此很容易找到字符串的差异,特别是如果差异在白色空间中.现在我使用了一个稍微复杂的测试助手,我在许多测试用例中重用了它.帮助器也有自己的模块,对于那个模块,我想添加断言内省.
helpers.py:
...
def my_helper():
assert 'abcy' == 'abcx'
Run Code Online (Sandbox Code Playgroud)
test_mycase.py:
from .helpers import my_helper
def test_assert_in_tc():
assert 'abcy' == 'abcx'
def test_assert_in_helper():
my_helper()
Run Code Online (Sandbox Code Playgroud)
测试报告显示测试中断言的有用信息,但是not for asserts within the helper:
=============================================================== FAILURES ================================================================
___________________________________________________________ test_assert_in_tc ___________________________________________________________
def test_assert_in_tc():
> assert 'abcy' == 'abcx'
E assert 'abcy' == 'abcx'
E - abcy
E ? ^
E + abcx
E ? ^
tests/test_pytest_assert.py:9: AssertionError
_________________________________________________________ test_assert_in_helper _________________________________________________________
def test_assert_in_helper():
> my_helper()
tests/test_pytest_assert.py:13:
_ _ _ _ _ …Run Code Online (Sandbox Code Playgroud) 该软件包boto3- 亚马逊用于python的官方AWS API包装器 - 非常支持批量上传项目到DynamoDB.它看起来像这样:
db = boto3.resource("dynamodb", region_name = "my_region").Table("my_table")
with db.batch_writer() as batch:
for item in my_items:
batch.put_item(Item = item)
Run Code Online (Sandbox Code Playgroud)
这my_items是一个Python字典列表,每个字典都必须包含表的主键.情况并不完美 - 例如,没有安全机制来阻止您超出吞吐量限制 - 但它仍然相当不错.
但是,从数据库中读取似乎没有任何对应物.我能找到的最接近的是DynamoDB.Client.batch_get_item(),但这里的API非常复杂.这是请求两个项目的样子:
db_client = boto3.client("dynamodb", "my_region")
db_client.batch_get_item(
RequestItems = {
"my_table": {
"Keys": [
{"my_primary_key": {"S": "my_key1"}},
{"my_primary_key": {"S": "my_key2"}}
]
}
}
)
Run Code Online (Sandbox Code Playgroud)
这可能是可以容忍的,但是响应也存在同样的问题:所有值都是字典,其键是数据类型("S"对于字符串,"N"数字,"M"映射等),并且解析所有内容会有点烦人.所以我的问题是:
是否有任何原生
boto3支持从DynamoDb批量读取,类似于batch_writer上面的功能?
没错,
是否
boto3提供任何内置方法来自动反序列化对DynamoDB.Client.batch_get_item()函数的响应?
我还要补充说,该函数boto3.resource("dynamodb").Table().get_item()具有我认为的"正确"API,因为输入或输出不需要类型解析.所以这似乎是开发人员的某种疏忽,我想我正在寻找一种解决方法.
我现在正在努力解决一个Javascript问题,我无法在网上找到解释.我想这是因为我没有输入正确的关键字,这也可能与我为什么要挣扎这个问题有关.
我的基本假设是可以改变对象:
> var x = {'n': 2};
> x['n']
2
> x['n'] = 3;
3
Run Code Online (Sandbox Code Playgroud)
pheww工作.但仍然(函数也是对象):
> var addn = function(a) {
var n = 2;
return n + a;
}
> addn(3);
5
> addn['n'] = 3;
3
> addn(3);
5
Run Code Online (Sandbox Code Playgroud)
这次我无法改变'n'.有没有办法解决这个问题,同时保持功能的味道?而不是完全OO.我有一个相关的问题是如何维护函数的依赖性以便进行测试 - 再次没有OO?因为我正在寻找解决方案,但如果可能的话,我也想了解Javascript中的哪种机制让我苦苦挣扎.
干杯,
标记
免责声明:通过提及OO我不打算对OO说任何话.而且我也不打算对VI或Emacs说任何话.如果我以某种方式伤害了你的感情,请跳过这个.
我不使用css,因为我想保存和处理创建的SVG可视化文件.这意味着我需要使用内联样式.到目前为止,我经历了d3无瑕疵,所以我很可能做错了.
我期待{'stroke-width':'3px'}来制作粗轴线.但它制作粗体轴标签.我希望用{'font-style':'normal'}这样的字体相关样式来控制文本.
我怎么用'笔画宽度'怎么了?我在Chrome和Firefox中测试了这个.
这是我的代码:
<script>
var margin = {top: 20, right: 10, bottom: 20, left: 40};
var width = 960 - margin.left - margin.right;
var height = 100 - margin.top - margin.bottom;
var x = d3.scale.linear().range([0, width]);
var y = d3.scale.linear().range([0, height]);
var xAxis = d3.svg.axis().scale(x).orient("bottom");
// .tickFormat(d3.time.format("%H:%M"));
var yAxis = d3.svg.axis().scale(y).orient("left").ticks(height/10);
var svg = d3.select("svg");
var vis = svg.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
.style({'font-size': '10px', 'font-family': 'sans-serif',
'font-style': 'normal', 'font-variant': 'normal',
'font-weight': 'normal'}); …Run Code Online (Sandbox Code Playgroud) 我有以下场景:
我相信对于知道如何解决这个问题的git专家来说,解决方案是显而易见的.到目前为止我找不到它,所以请分享.
我将传感器数据存储在S3中(每5分钟写入一次数据):
farm_iot/sensor_data/farm/farm0001/sensor01/1541252701443
Run Code Online (Sandbox Code Playgroud)
1541252701443是一个包含度量的json文件:
{ "temperature": 14.78, "pressure": 961.70, "humidity": 68.32}
Run Code Online (Sandbox Code Playgroud)
我肯定错过了一些蜂巢技能.不幸的是,我没有找到一个提取我的时间序列json数据的例子.我也不确定Hive/Athena确实支持这种数据摔跤.
我正在为这个数据创建一个Athena表格...
CREATE EXTERNAL TABLE IF NOT EXISTS farm.sensor_data (
device string,
sensor string,
data_point string,
value double
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://farm-iot/sensor_data/farm/farm0001/sensor01/'
PARTITIONED BY (timestamp string)
TBLPROPERTIES ('has_encrypted_data'='false')
Run Code Online (Sandbox Code Playgroud)
我想的另一条道路是将数据存储在一个更容易处理的结构中/也许我没有足够的数据分区??!
所以也许我应该像这样添加dt到结构:
farm_iot/sensor_data/2018-11-03-02-45-02/farm/farm0001/sensor01/1541252701443
Run Code Online (Sandbox Code Playgroud)
仍然没有让我到达我想要的地方:
+---------------+----------+----------+-------------+--------+
| timestamp | device | sensor | data_point | value |
+---------------+----------+----------+-------------+--------+
| 1541252701443 | farm0001 | sensor01 | temperature | 14.78 |
+---------------+----------+----------+-------------+--------+
| …Run Code Online (Sandbox Code Playgroud) 我正在使用Sphinx编写一个包含大量引用的文档:
.. _human-factor:
The Human Factor
================
...
(see :ref:`human-factor` for details)
Run Code Online (Sandbox Code Playgroud)
编译后的文档包含以下内容:
(详见人体因素)
相反,我希望它的格式如下:
(详见5.1人为因素)
我试图谷歌解决方案,我发现乳胶hyperref包可以做到这一点,但我不知道如何将其添加到Sphinx构建.
免责声明:祝你圣诞快乐,我希望我的问题不会打扰你!
sample.go:
package main
import(
"fmt"
"os"
)
type sample struct {
value int64
}
func (s sample) useful() {
if s.value == 0 {
fmt.Println("Error: something is wrong!")
os.Exit(1)
} else {
fmt.Println("May the force be with you!")
}
}
func main() {
s := sample{42}
s.useful()
s.value = 0
s.useful()
}
// output:
// May the force be with you!
// Error: something is wrong!
// exit status 1
Run Code Online (Sandbox Code Playgroud)
我做了很多关于如何在golang测试中使用接口的研究.但到目前为止,我还是无法彻底解决这个问题.至少我无法看到界面如何帮助我,当我需要"模拟"(道歉使用这个词)golang std.像"fmt"这样的库包.
我想出了两个场景:
我不喜欢这两种情况: …
这是我想要做的非常具体,所以我开始描述它是什么:
我想出了使用Matplotlib等渲染的所有部分,但我是Pyramid和Deform的新手.我还有一个工作视图,从文件中提供图.变形也是一种作品.目前还不清楚如何最好地构建ULR以区分服务,编辑和渲染用例.我猜在Pyramid中这意味着如何配置serve_view和edit_view的路由.
__init__.py:
config.add_route('serve_route',
'/{project_name}/testruns/{testrun_name}/plots/{plot_name}.png')
config.add_route('edit_route',
'/{project_name}/testruns/{testrun_name}/plots/{plot_name}.png')
# can I use query strings like "?action=edit" here to distinguish the difference?
views.py:
@view_config(context=Root, route_name='serve_route')
def plot_view(context, request):
...
@view_config(context=Root, renderer='bunseki:templates/form.pt', route_name='edit_route')
def edit_view(request):
...
Run Code Online (Sandbox Code Playgroud)
我金字塔手册我找不到参考如何在路线中设置参数.我想指向一些文档或示例的指针就足够了,我可以自己弄清楚细节.谢谢!
我正在使用 Python 3 中的线程 SocketServer 开发一个“简单”服务器。
为此,我在实施关闭方面遇到了很多麻烦。我在互联网上找到的下面的代码最初可以工作,但在通过 telnet 从客户端发送一些命令后停止工作。一些调查告诉我它挂在 threading._shutdown... threading._wait_for_tstate_lock 中,但到目前为止这还没有敲响警钟。
我的研究告诉我,关于如何在不同的 Python 版本中做到这一点,有大约 42 种不同的解决方案、框架等。到目前为止我找不到 python3 的工作方法。例如,我喜欢python 2.7 的telnetsrv (https://pypi.python.org/pypi/telnetsrv/0.4)(它使用 gevent 中的 greenlets),但这个不适用于 python 3。所以如果有更多 pythonic,std lib 方法或可靠工作的方法我很想听听!
我目前的赌注是使用套接字服务器,但我还不知道如何处理挂起的服务器。我删除了所有日志语句和大部分功能,因此我可以发布这个暴露问题的最小服务器:
# -*- coding: utf-8 -*-
import socketserver
import threading
SERVER = None
def shutdown_cmd(request):
global SERVER
request.send(bytes('server shutdown requested\n', 'utf-8'))
request.close()
SERVER.shutdown()
print('after shutdown!!')
#SERVER.server_close()
class service(socketserver.BaseRequestHandler):
def handle(self):
while True:
try:
msg = str(self.request.recv(1024).strip(), 'utf-8')
if msg == 'shutdown':
shutdown_cmd(msg, self.request)
else:
self.request.send(bytes("You …Run Code Online (Sandbox Code Playgroud)