小编ayc*_*dee的帖子

模拟Python的内置打印功能

我试过了

from mock import Mock
import __builtin__

__builtin__.print = Mock()
Run Code Online (Sandbox Code Playgroud)

但这会引发语法错误.我也试过修补它

@patch('__builtin__.print')
def test_something_that_performs_lots_of_prints(self, mock_print):

    # assert stuff
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

python unit-testing mocking python-2.x

38
推荐指数
4
解决办法
2万
查看次数

如何使用boto3有条件地将项目插入到dynamodb表中

如果我有一个带有userId的散列键和productId的范围键的表,那么只有在使用boto3的dynamodb绑定不存在的情况下,如何才能将该项放入该表中?

对put_item的正常调用如下所示

table.put_item(Item={'userId': 1, 'productId': 2})
Run Code Online (Sandbox Code Playgroud)

我使用ConditionExpression的调用如下所示:

table.put_item(
    Item={'userId': 1, 'productId': 2}, 
    ConditionExpression='userId <> :uid AND productId <> :pid', 
    ExpressionAttributeValues={':uid': 1, ':pid': 3}
)
Run Code Online (Sandbox Code Playgroud)

但是每次都会引发ConditionalCheckFailedException.项目是否存在具有相同productId的项目.

python amazon-dynamodb boto3

21
推荐指数
2
解决办法
2万
查看次数

Selenium Webdriver(node.js)截取屏幕截图并保存测试结果

我开始为网站应用程序开发测试,但我遇到了一些问题.

我正在使用Node.js,webdriver,chromedriver和selenium rc.

问题是:1.如何制作屏幕截图并将其保存在与脚本相同的文件夹中.2.有没有办法保存测试用例的测试日志?例如,如果检查页面上的元素但找不到它,我该如何输出?

javascript node.js selenium-webdriver

20
推荐指数
3
解决办法
2万
查看次数

AWS Cloudwatch日志流名称无法识别

所以,

我正在使用AWS Lambda的自动日志记录.它生成的日志流的名称如下所示:2016/05/18/[$LATEST]99577d10a8cb420cb124a90c20d5653a

我可以使用'aws logs describe-log-streams'查询可用的日志流,并获取一些包含这些名称的JSON以及其他元数据.

但是,如果我尝试这样做:

aws logs get-log-events --log-group-name /aws/lambda/categorise --log-stream-name "2016/05/18/[$LATEST]99577d10a8cb420cb124a90c20d5653a"
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

A client error (ResourceNotFoundException) occurred when calling the GetLogEvents operation: The specified log stream does not exist.
Run Code Online (Sandbox Code Playgroud)

因此,如果describe log streams命令返回的日志流名称实际上不存在.它是什么?

我已经尝试了一下这个命令,删除它[$LATEST],引用它,逃避它.但没有快乐.有没有人设法使用aws cli检索他们的Lambda日志事件?

amazon-web-services aws-cli aws-lambda

15
推荐指数
1
解决办法
5028
查看次数

在龙卷风下v4 + WebSocket连接被403拒绝

我有一个较旧的龙卷风服务器,可以处理vanilla WebSocket连接.我通过Nginx将这些连接从wss://info.mydomain.com代理到wss://mydomain.com:8080,以便绕过阻止非标准端口的客户代理.

在最近升级到Tornado 4.0后,所有连接都被拒绝了403.导致此问题的原因是什么?如何解决?

nginx tornado websocket

12
推荐指数
2
解决办法
4408
查看次数

较少的编译器在Linux vs OSX上使用不同的浮点精度

每当我在我的计算机上编译较少的文件到css(Ubuntu 13.10,AMD64)时,我得到的浮点结果与我的同事在他的机器上编译时的结果非常不同(Mac OSX 10.6).这一切都很好.浮点数学等等.数字基本相同.Blah blah.

但它使得输出的差异和提交真的很烦人.我最终忽略了数以百计:

.col-lg-offset-10 {
  margin-left: 83.33333333%;
  margin-left: 83.33333333333334%;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能避免这个问题?

less floating-point-precision

7
推荐指数
1
解决办法
482
查看次数

读取上游时nginx权限被拒绝 - 即使以root身份运行也是如此

我在nginx后面的uWSGI下运行了一个烧瓶应用程序.

*1 readv() failed (13: Permission denied) while reading upstream, client: 10.0.3.1, server: , request: "GET /some/path/constants.js HTTP/1.1", upstream: "uwsgi://unix:/var/uwsgi.sock:", host: "dev.myhost.com"
Run Code Online (Sandbox Code Playgroud)

套接字上的权限是可以的(666,并设置为与nginx相同的用户),事实上,即使我以root身份运行nginx,我仍然会收到此错误.

烧瓶app/uwsgi正在发送请求.但它只是不被Nginx读取.这是在Ubuntu Utopic Unicorn上.

如果nginx进程具有对套接字的完全访问权限,那么知道哪些权限可能被拒绝?

作为一个复杂的因素,该服务器在一个安装了Ubuntu 14.04的容器中运行.这个设置过去常常工作......但我最近将主机升级到14.10 ......我完全明白这可能是导致问题的原因.但在我降级主机或升级容器之前,我想了解原因.

当我对生成此错误的工作人员运行strace时,我看到它正在进行的调用是这样的:

readv(14, 0x7fffb3d16a80, 1)            = -1 EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)

14 似乎是这个系统调用创建的文件描述符

socket(PF_LOCAL, SOCK_STREAM, 0)        = 14
Run Code Online (Sandbox Code Playgroud)

所以它无法读取它刚刚创建的本地套接字?

python nginx flask uwsgi

6
推荐指数
1
解决办法
1355
查看次数

Python,Django单元测试.RequestFactory测试不起作用

我有这个观点,我想测试

def change_item(request):
    name_change = request.POST.get('name_change')
    cost_change = request.POST.get('cost_change')
    category_change = request.POST.get('category_change')
    product_id = request.POST.get('product_id')
    category_name = Category.objects.get(name = category_change)
    product = Product.objects.get(id__exact = product_id)
    product.name = name_change
    product.category = category_name
    product.price = cost_change
    product.save()
    return HttpResponse()
Run Code Online (Sandbox Code Playgroud)

我为它写了一个测试,但它不起作用(我想测试请求)

from django.test import RequestFactory
from django.test import TestCase
from views import change_item
from models import Product
from django.utils import unittest


class TestChange_item(TestCase):
    def setUp(self):
        self.factory = RequestFactory()

    def change_item_test(self):
        # Create an instance of a GET request.
        request = self.factory.get('main/views')
        # Test …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing django-testing

4
推荐指数
1
解决办法
3491
查看次数

在硒下运行时,如何减少chromedriver日志的详细程度?

我的jenkins关于我的功能测试的失败报告充满了这样的行:

selenium.webdriver.remote.remote_connection: DEBUG: Finished Request
selenium.webdriver.remote.remote_connection: DEBUG: POST http://127.0.0.1:52932/session/60d406aa8e55ac841cf4efb4a43e63be/element {"using": "css selector", "sessionId": "60d406aa8e55ac841cf4efb4a43e63be", "value": "#Login input[name=email]"}
Run Code Online (Sandbox Code Playgroud)

我不关心它们,并且我实际上想要看到的每一行堆栈跟踪都有数百条这样的输出行.我该如何关闭它们?

到目前为止我尝试过的东西不起作用:

from selenium import webdriver
driver = webdriver.Chrome(
    service_args=['--silent'], 
    service_log_path='/tmp/throwaway.log')
Run Code Online (Sandbox Code Playgroud)

和...

from selenium import webdriver
driver = webdriver.Chrome(
    service_args=['2>/dev/null'])
Run Code Online (Sandbox Code Playgroud)

和...

from selenium import webdriver
driver = webdriver.Chrome(
    service_args=['>', '/dev/null', '2>&1'])
Run Code Online (Sandbox Code Playgroud)

所有这些都没有减少任何输出.

python selenium jenkins selenium-chromedriver

4
推荐指数
1
解决办法
3839
查看次数

%!B(MISSING) fmt.Printf 和 log.Println 之间的不同输出

我有一些从json.Marshal. 如果像这样将它们记录到标准输出:

log.Println(string(b))
Run Code Online (Sandbox Code Playgroud)

它们的输出如下:

{"encoded":"%2B"}
Run Code Online (Sandbox Code Playgroud)

如果我将它们写入磁盘

fmt.Fprintf(w, string(b))
Run Code Online (Sandbox Code Playgroud)

然后 cat 文件是这样写的:

{"encoded":"%!B(MISSING)"}
Run Code Online (Sandbox Code Playgroud)

据我所知,string(b)really的输出是第一个,也是我预期的输出。我究竟做错了什么?

go

4
推荐指数
1
解决办法
4018
查看次数

javascript事件函数 - 在声明之前调用

我有一个关于JavaScript函数的问题.

例如,请参考以下代码.

  • 在前两行中,我打开一个indexedDB.
  • 之后,我将onsuccess函数附加到openRequest.
  • 警报正确显示.

我假设'open'函数触发'success'事件函数.但是这怎么可行呢,因为'open'函数在调用'open'函数后被附加到openRequest ?

var indexedDB = window.indexedDB;
var openRequest = indexedDB.open('MyTestDB');
openRequest.onsuccess = function (response) {
    alert('sucess');
};
Run Code Online (Sandbox Code Playgroud)

javascript html5 indexeddb

1
推荐指数
1
解决办法
194
查看次数